/** Copyright (C) 2020-2026 Kedron Holdings LLC, All Rights Reserved. This file is part of Reactor.
 *  For info and license terms please see https://reactor.toggledbits.com/
 *  ------------------------------------------------------------------------------
*/
const a13_0x1bef5e = a13_0x3183;
(function (_0x3009be, _0x292f2f) {
    const _0x3a552f = a13_0x3183, _0x30f476 = _0x3009be();
    while (!![]) {
        try {
            const _0x3fbc19 = parseInt(_0x3a552f(0x91)) / 0x1 + -parseInt(_0x3a552f(0x99)) / 0x2 * (-parseInt(_0x3a552f(0x94)) / 0x3) + -parseInt(_0x3a552f(0x88)) / 0x4 * (parseInt(_0x3a552f(0x9f)) / 0x5) + -parseInt(_0x3a552f(0x8a)) / 0x6 * (-parseInt(_0x3a552f(0xa6)) / 0x7) + -parseInt(_0x3a552f(0x8d)) / 0x8 * (parseInt(_0x3a552f(0x9b)) / 0x9) + parseInt(_0x3a552f(0x9e)) / 0xa + -parseInt(_0x3a552f(0x89)) / 0xb;
            if (_0x3fbc19 === _0x292f2f)
                break;
            else
                _0x30f476['push'](_0x30f476['shift']());
        } catch (_0x516cc0) {
            _0x30f476['push'](_0x30f476['shift']());
        }
    }
}(a13_0x9052, 0x53821));
const version = 0x6235, Logger = require(a13_0x1bef5e(0x85)), Observable = require(a13_0x1bef5e(0x98)), Observer = require(a13_0x1bef5e(0xa4)), util = require(a13_0x1bef5e(0x8c));
var expressions = {};
const validName = /^\p{Alphabetic}[\p{Alphabetic}0-9_$]*$/iu;
function a13_0x3183(_0x28d3af, _0x97877a) {
    _0x28d3af = _0x28d3af - 0x85;
    const _0x9052e2 = a13_0x9052();
    let _0x3183e2 = _0x9052e2[_0x28d3af];
    return _0x3183e2;
}
class Expression {
    constructor(_0x1ab965) {
        const _0x3793c0 = a13_0x1bef5e;
        this['id'] = _0x1ab965, this[_0x3793c0(0xa1)] = Logger[_0x3793c0(0xa3)](this);
    }
    static [a13_0x1bef5e(0xa2)](_0xffd268) {
        const _0x44c83f = a13_0x1bef5e;
        return validName[_0x44c83f(0x8b)](_0xffd268);
    }
    static ['has'](_0x2cd073) {
        return !!expressions[_0x2cd073];
    }
    static [a13_0x1bef5e(0x87)](_0x1f8279) {
        const _0x6a031f = a13_0x1bef5e;
        let _0x2da152 = _0x1f8279[_0x6a031f(0x9a)]();
        if (!Expression[_0x6a031f(0xa2)](_0x2da152))
            throw new Error(_0x6a031f(0x97) + _0x2da152 + _0x6a031f(0x93));
        if (expressions[_0x2da152])
            throw new Error(_0x6a031f(0x86) + _0x2da152 + _0x6a031f(0x8f));
        return expressions[_0x2da152] = _0x1f8279, _0x1f8279;
    }
    static [a13_0x1bef5e(0xa5)](_0x3c31dc) {
        return expressions[_0x3c31dc];
    }
    ['toString']() {
        const _0x174d5e = a13_0x1bef5e;
        return this['constructor'][_0x174d5e(0x9c)] + '#' + String(this['id']);
    }
    ['_destroy']() {
        const _0x4d9e18 = a13_0x1bef5e;
        this[_0x4d9e18(0xa1)][_0x4d9e18(0x96)](0x5, _0x4d9e18(0x9d), this), this['id'] && (this['unsubscribe'](), this['disconnect'](), delete expressions[this['id']], this[_0x4d9e18(0xa0)] = this['id'], this['id'] = null);
    }
    [a13_0x1bef5e(0x9a)]() {
        return this['id'];
    }
    ['getValue']() {
        const _0x543572 = a13_0x1bef5e;
        throw new ReferenceError(_0x543572(0x92));
    }
    [a13_0x1bef5e(0x95)]() {
        const _0x315cf5 = a13_0x1bef5e;
        throw new ReferenceError(_0x315cf5(0x92));
    }
}
util[a13_0x1bef5e(0x90)](Expression, Observer), util[a13_0x1bef5e(0x90)](Expression, Observable), module[a13_0x1bef5e(0x8e)] = Expression;
function a13_0x9052() {
    const _0x51b28d = [
        'add',
        '332POwDZH',
        '6685525cqjvPV',
        '1820790QulqCa',
        'test',
        './util',
        '138008SXSpaA',
        'exports',
        '\x22\x20already\x20exists.',
        'mixin',
        '43908SmhOHk',
        'Needs\x20subclass\x20implementation',
        '\x22\x20is\x20invalid',
        '1887855UXyYyS',
        'setValue',
        'debug',
        'Expression\x20name\x20\x22',
        './Observable.js',
        '2rJjykt',
        'getID',
        '45vxMGrS',
        'name',
        '%1:\x20Expression._destroy',
        '1772810zXrrNh',
        '7100xyScSl',
        '__deleted',
        'log',
        'isValidName',
        'getLogger',
        './Observer.js',
        'get',
        '7IApker',
        './Logger.js',
        'Expression\x20named\x20\x22'
    ];
    a13_0x9052 = function () {
        return _0x51b28d;
    };
    return a13_0x9052();
}