from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var)

# Code follows:
var.registers(['_typeof', 'escodegen', 'getFromGlobals'])
@Js
def PyJsHoisted_getFromGlobals_(name, this, arguments, var=var):
    var = Scope({'name':name, 'this':this, 'arguments':arguments}, var)
    var.registers(['name'])
    if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
    if var.get('Object').get('prototype').get('_fake_exports').callprop('hasOwnProperty', var.get('name')):
        return var.get('Object').get('prototype').get('_fake_exports').get(var.get('name'))
    else:
        PyJsTempException = JsToPyException(var.get('Error')((Js('Could not find any value named ')+var.get('name'))))
        raise PyJsTempException
PyJsHoisted_getFromGlobals_.func_name = 'getFromGlobals'
var.put('getFromGlobals', PyJsHoisted_getFromGlobals_)
Js('use strict')
@Js
def PyJs_anonymous_0_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return var.get('obj',throw=False).typeof()
PyJs_anonymous_0_._set_name('anonymous')
@Js
def PyJs_anonymous_1_(obj, this, arguments, var=var):
    var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
    var.registers(['obj'])
    return (Js('symbol') if (((var.get('obj') and PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function'))) and PyJsStrictEq(var.get('obj').get('constructor'),var.get('Symbol'))) and PyJsStrictNeq(var.get('obj'),var.get('Symbol').get('prototype'))) else var.get('obj',throw=False).typeof())
PyJs_anonymous_1_._set_name('anonymous')
var.put('_typeof', (PyJs_anonymous_0_ if (PyJsStrictEq(var.get('Symbol',throw=False).typeof(),Js('function')) and PyJsStrictEq(var.get('Symbol').get('iterator').typeof(),Js('symbol'))) else PyJs_anonymous_1_))
@Js
def PyJs_anonymous_3_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    PyJs_Object_4_ = Js({})
    @Js
    def PyJs_anonymous_5_(PyJsArg_676c6f62616c_, this, arguments, var=var):
        var = Scope({'global':PyJsArg_676c6f62616c_, 'this':this, 'arguments':arguments}, var)
        var.registers(['global'])
        @Js
        def PyJs_anonymous_6_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers(['preserveBlankLines', 'generateVerbatimString', 'F_ALLOW_CALL', 'generateVerbatim', 'E_TFT', 'isStatement', 'calculateSpaces', 'F_DIRECTIVE_CTX', 'generateInternal', 'parenthesize', 'esutils', 'getDefaultOptions', 'hasLineTerminator', 'parentheses', 'semicolons', 'E_TTT', 'generateBlankLines', 'generateComment', 'escapeString', 'BinaryPrecedence', 'merge', 'generateNumber', 'hexadecimal', 'generateStarSuffix', 'generateAsyncPrefix', 'F_ALLOW_UNPARATH_NEW', 'sourceCode', 'E_TTF', 'escapeAllowedCharacter', 'Precedence', 'directive', 'estraverse', 'Syntax', 'generateMethodPrefix', 'S_FFFF', 'F_FUNC_BODY', 'join', 'parse', 'S_TTFF', 'F_SEMICOLON_OPT', 'isExpression', 'withIndent', 'E_FFT', 'FORMAT_MINIFY', 'endsWithLineTerminator', 'CodeGenerator', 'escapeless', 'S_TFFF', 'generateRegExp', 'adjustMultilineComment', 'space', 'addComments', 'E_FTT', 'generateIdentifier', 'SourceNode', 'escapeRegExpCharacter', 'extra', 'generate', 'toSourceNodeWhenNeeded', 'S_TFFT', 'indent', 'F_ALLOW_IN', 'safeConcatenation', 'flattenToString', 'sourceMap', 'updateDeeply', 'escapeDirective', 'escapeDisallowedCharacter', 'E_TFF', 'addIndent', 'stringRepeat', 'base', 'noEmptySpace', 'S_TFTF', 'quotes', 'newline', 'json', 'renumber', 'FORMAT_DEFAULTS'])
            @Js
            def PyJsHoisted_isExpression_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['node'])
                return var.get('CodeGenerator').get('Expression').callprop('hasOwnProperty', var.get('node').get('type'))
            PyJsHoisted_isExpression_.func_name = 'isExpression'
            var.put('isExpression', PyJsHoisted_isExpression_)
            @Js
            def PyJsHoisted_isStatement_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['node'])
                return var.get('CodeGenerator').get('Statement').callprop('hasOwnProperty', var.get('node').get('type'))
            PyJsHoisted_isStatement_.func_name = 'isStatement'
            var.put('isStatement', PyJsHoisted_isStatement_)
            @Js
            def PyJsHoisted_getDefaultOptions_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                PyJs_Object_11_ = Js({'style':Js('    '),'base':Js(0.0),'adjustMultilineComment':Js(False)})
                PyJs_Object_10_ = Js({'indent':PyJs_Object_11_,'newline':Js('\n'),'space':Js(' '),'json':Js(False),'renumber':Js(False),'hexadecimal':Js(False),'quotes':Js('single'),'escapeless':Js(False),'compact':Js(False),'parentheses':Js(True),'semicolons':Js(True),'safeConcatenation':Js(False),'preserveBlankLines':Js(False)})
                PyJs_Object_12_ = Js({'comprehensionExpressionStartsWithAssignment':Js(False),'starlessGenerator':Js(False)})
                PyJs_Object_9_ = Js({'indent':var.get(u"null"),'base':var.get(u"null"),'parse':var.get(u"null"),'comment':Js(False),'format':PyJs_Object_10_,'moz':PyJs_Object_12_,'sourceMap':var.get(u"null"),'sourceMapRoot':var.get(u"null"),'sourceMapWithCode':Js(False),'directive':Js(False),'raw':Js(True),'verbatim':var.get(u"null"),'sourceCode':var.get(u"null")})
                return PyJs_Object_9_
            PyJsHoisted_getDefaultOptions_.func_name = 'getDefaultOptions'
            var.put('getDefaultOptions', PyJsHoisted_getDefaultOptions_)
            @Js
            def PyJsHoisted_stringRepeat_(str, num, this, arguments, var=var):
                var = Scope({'str':str, 'num':num, 'this':this, 'arguments':arguments}, var)
                var.registers(['result', 'str', 'num'])
                var.put('result', Js(''))
                #for JS loop
                var.put('num', Js(0.0), '|')
                while (var.get('num')>Js(0.0)):
                    try:
                        if (var.get('num')&Js(1.0)):
                            var.put('result', var.get('str'), '+')
                    finally:
                            PyJsComma(var.put('num', Js(1.0), '>>>'),var.put('str', var.get('str'), '+'))
                return var.get('result')
            PyJsHoisted_stringRepeat_.func_name = 'stringRepeat'
            var.put('stringRepeat', PyJsHoisted_stringRepeat_)
            @Js
            def PyJsHoisted_hasLineTerminator_(str, this, arguments, var=var):
                var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
                var.registers(['str'])
                return JsRegExp('/[\\r\\n]/g').callprop('test', var.get('str'))
            PyJsHoisted_hasLineTerminator_.func_name = 'hasLineTerminator'
            var.put('hasLineTerminator', PyJsHoisted_hasLineTerminator_)
            @Js
            def PyJsHoisted_endsWithLineTerminator_(str, this, arguments, var=var):
                var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
                var.registers(['str', 'len'])
                var.put('len', var.get('str').get('length'))
                return (var.get('len') and var.get('esutils').get('code').callprop('isLineTerminator', var.get('str').callprop('charCodeAt', (var.get('len')-Js(1.0)))))
            PyJsHoisted_endsWithLineTerminator_.func_name = 'endsWithLineTerminator'
            var.put('endsWithLineTerminator', PyJsHoisted_endsWithLineTerminator_)
            @Js
            def PyJsHoisted_merge_(target, override, this, arguments, var=var):
                var = Scope({'target':target, 'override':override, 'this':this, 'arguments':arguments}, var)
                var.registers(['target', 'key', 'override'])
                pass
                for PyJsTemp in var.get('override'):
                    var.put('key', PyJsTemp)
                    if var.get('override').callprop('hasOwnProperty', var.get('key')):
                        var.get('target').put(var.get('key'), var.get('override').get(var.get('key')))
                return var.get('target')
            PyJsHoisted_merge_.func_name = 'merge'
            var.put('merge', PyJsHoisted_merge_)
            @Js
            def PyJsHoisted_updateDeeply_(target, override, this, arguments, var=var):
                var = Scope({'target':target, 'override':override, 'this':this, 'arguments':arguments}, var)
                var.registers(['val', 'target', 'isHashObject', 'key', 'override'])
                @Js
                def PyJsHoisted_isHashObject_(target, this, arguments, var=var):
                    var = Scope({'target':target, 'this':this, 'arguments':arguments}, var)
                    var.registers(['target'])
                    return ((PyJsStrictEq((Js('undefined') if PyJsStrictEq(var.get('target',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('target'))),Js('object')) and var.get('target').instanceof(var.get('Object'))) and var.get('target').instanceof(var.get('RegExp')).neg())
                PyJsHoisted_isHashObject_.func_name = 'isHashObject'
                var.put('isHashObject', PyJsHoisted_isHashObject_)
                pass
                pass
                for PyJsTemp in var.get('override'):
                    var.put('key', PyJsTemp)
                    if var.get('override').callprop('hasOwnProperty', var.get('key')):
                        var.put('val', var.get('override').get(var.get('key')))
                        if var.get('isHashObject')(var.get('val')):
                            if var.get('isHashObject')(var.get('target').get(var.get('key'))):
                                var.get('updateDeeply')(var.get('target').get(var.get('key')), var.get('val'))
                            else:
                                PyJs_Object_13_ = Js({})
                                var.get('target').put(var.get('key'), var.get('updateDeeply')(PyJs_Object_13_, var.get('val')))
                        else:
                            var.get('target').put(var.get('key'), var.get('val'))
                return var.get('target')
            PyJsHoisted_updateDeeply_.func_name = 'updateDeeply'
            var.put('updateDeeply', PyJsHoisted_updateDeeply_)
            @Js
            def PyJsHoisted_generateNumber_(value, this, arguments, var=var):
                var = Scope({'value':value, 'this':this, 'arguments':arguments}, var)
                var.registers(['point', 'temp', 'exponent', 'result', 'pos', 'value'])
                pass
                if PyJsStrictNeq(var.get('value'),var.get('value')):
                    PyJsTempException = JsToPyException(var.get('Error').create(Js('Numeric literal whose value is NaN')))
                    raise PyJsTempException
                if ((var.get('value')<Js(0.0)) or (PyJsStrictEq(var.get('value'),Js(0.0)) and ((Js(1.0)/var.get('value'))<Js(0.0)))):
                    PyJsTempException = JsToPyException(var.get('Error').create(Js('Numeric literal whose value is negative')))
                    raise PyJsTempException
                if PyJsStrictEq(var.get('value'),(Js(1.0)/Js(0.0))):
                    return (Js('null') if var.get('json') else (Js('1e400') if var.get('renumber') else Js('1e+400')))
                var.put('result', (Js('')+var.get('value')))
                if (var.get('renumber').neg() or (var.get('result').get('length')<Js(3.0))):
                    return var.get('result')
                var.put('point', var.get('result').callprop('indexOf', Js('.')))
                if ((var.get('json').neg() and PyJsStrictEq(var.get('result').callprop('charCodeAt', Js(0.0)),Js(48))) and PyJsStrictEq(var.get('point'),Js(1.0))):
                    var.put('point', Js(0.0))
                    var.put('result', var.get('result').callprop('slice', Js(1.0)))
                var.put('temp', var.get('result'))
                var.put('result', var.get('result').callprop('replace', Js('e+'), Js('e')))
                var.put('exponent', Js(0.0))
                if (var.put('pos', var.get('temp').callprop('indexOf', Js('e')))>Js(0.0)):
                    var.put('exponent', (+var.get('temp').callprop('slice', (var.get('pos')+Js(1.0)))))
                    var.put('temp', var.get('temp').callprop('slice', Js(0.0), var.get('pos')))
                if (var.get('point')>=Js(0.0)):
                    var.put('exponent', ((var.get('temp').get('length')-var.get('point'))-Js(1.0)), '-')
                    var.put('temp', ((+(var.get('temp').callprop('slice', Js(0.0), var.get('point'))+var.get('temp').callprop('slice', (var.get('point')+Js(1.0)))))+Js('')))
                var.put('pos', Js(0.0))
                while PyJsStrictEq(var.get('temp').callprop('charCodeAt', ((var.get('temp').get('length')+var.get('pos'))-Js(1.0))),Js(48)):
                    var.put('pos',Js(var.get('pos').to_number())-Js(1))
                if PyJsStrictNeq(var.get('pos'),Js(0.0)):
                    var.put('exponent', var.get('pos'), '-')
                    var.put('temp', var.get('temp').callprop('slice', Js(0.0), var.get('pos')))
                if PyJsStrictNeq(var.get('exponent'),Js(0.0)):
                    var.put('temp', (Js('e')+var.get('exponent')), '+')
                def PyJs_LONG_14_(var=var):
                    return (((var.get('temp').get('length')<var.get('result').get('length')) or (((var.get('hexadecimal') and (var.get('value')>Js(1000000000000.0))) and PyJsStrictEq(var.get('Math').callprop('floor', var.get('value')),var.get('value'))) and (var.put('temp', (Js('0x')+var.get('value').callprop('toString', Js(16.0)))).get('length')<var.get('result').get('length')))) and PyJsStrictEq((+var.get('temp')),var.get('value')))
                if PyJs_LONG_14_():
                    var.put('result', var.get('temp'))
                return var.get('result')
            PyJsHoisted_generateNumber_.func_name = 'generateNumber'
            var.put('generateNumber', PyJsHoisted_generateNumber_)
            @Js
            def PyJsHoisted_escapeRegExpCharacter_(ch, previousIsBackslash, this, arguments, var=var):
                var = Scope({'ch':ch, 'previousIsBackslash':previousIsBackslash, 'this':this, 'arguments':arguments}, var)
                var.registers(['ch', 'previousIsBackslash'])
                if PyJsStrictEq((var.get('ch')&(~Js(1.0))),Js(8232)):
                    return ((Js('u') if var.get('previousIsBackslash') else Js('\\u'))+(Js('2028') if PyJsStrictEq(var.get('ch'),Js(8232)) else Js('2029')))
                else:
                    if (PyJsStrictEq(var.get('ch'),Js(10.0)) or PyJsStrictEq(var.get('ch'),Js(13.0))):
                        return ((Js('') if var.get('previousIsBackslash') else Js('\\'))+(Js('n') if PyJsStrictEq(var.get('ch'),Js(10.0)) else Js('r')))
                return var.get('String').callprop('fromCharCode', var.get('ch'))
            PyJsHoisted_escapeRegExpCharacter_.func_name = 'escapeRegExpCharacter'
            var.put('escapeRegExpCharacter', PyJsHoisted_escapeRegExpCharacter_)
            @Js
            def PyJsHoisted_generateRegExp_(reg, this, arguments, var=var):
                var = Scope({'reg':reg, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'reg', 'characterInBrack', 'i', 'iz', 'ch', 'previousIsBackslash', 'result', 'match'])
                pass
                var.put('result', var.get('reg').callprop('toString'))
                if var.get('reg').get('source'):
                    var.put('match', var.get('result').callprop('match', JsRegExp('/\\/([^/]*)$/')))
                    if var.get('match').neg():
                        return var.get('result')
                    var.put('flags', var.get('match').get('1'))
                    var.put('result', Js(''))
                    var.put('characterInBrack', Js(False))
                    var.put('previousIsBackslash', Js(False))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('reg').get('source').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.put('ch', var.get('reg').get('source').callprop('charCodeAt', var.get('i')))
                            if var.get('previousIsBackslash').neg():
                                if var.get('characterInBrack'):
                                    if PyJsStrictEq(var.get('ch'),Js(93.0)):
                                        var.put('characterInBrack', Js(False))
                                else:
                                    if PyJsStrictEq(var.get('ch'),Js(47.0)):
                                        var.put('result', Js('\\'), '+')
                                    else:
                                        if PyJsStrictEq(var.get('ch'),Js(91.0)):
                                            var.put('characterInBrack', Js(True))
                                var.put('result', var.get('escapeRegExpCharacter')(var.get('ch'), var.get('previousIsBackslash')), '+')
                                var.put('previousIsBackslash', PyJsStrictEq(var.get('ch'),Js(92.0)))
                            else:
                                var.put('result', var.get('escapeRegExpCharacter')(var.get('ch'), var.get('previousIsBackslash')), '+')
                                var.put('previousIsBackslash', Js(False))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                    return (((Js('/')+var.get('result'))+Js('/'))+var.get('flags'))
                return var.get('result')
            PyJsHoisted_generateRegExp_.func_name = 'generateRegExp'
            var.put('generateRegExp', PyJsHoisted_generateRegExp_)
            @Js
            def PyJsHoisted_escapeAllowedCharacter_(code, next, this, arguments, var=var):
                var = Scope({'code':code, 'next':next, 'this':this, 'arguments':arguments}, var)
                var.registers(['code', 'hex', 'next'])
                pass
                if PyJsStrictEq(var.get('code'),Js(8)):
                    return Js('\\b')
                if PyJsStrictEq(var.get('code'),Js(12)):
                    return Js('\\f')
                if PyJsStrictEq(var.get('code'),Js(9)):
                    return Js('\\t')
                var.put('hex', var.get('code').callprop('toString', Js(16.0)).callprop('toUpperCase'))
                if (var.get('json') or (var.get('code')>Js(255))):
                    return ((Js('\\u')+Js('0000').callprop('slice', var.get('hex').get('length')))+var.get('hex'))
                else:
                    if (PyJsStrictEq(var.get('code'),Js(0)) and var.get('esutils').get('code').callprop('isDecimalDigit', var.get('next')).neg()):
                        return Js('\\0')
                    else:
                        if PyJsStrictEq(var.get('code'),Js(11)):
                            return Js('\\x0B')
                        else:
                            return ((Js('\\x')+Js('00').callprop('slice', var.get('hex').get('length')))+var.get('hex'))
            PyJsHoisted_escapeAllowedCharacter_.func_name = 'escapeAllowedCharacter'
            var.put('escapeAllowedCharacter', PyJsHoisted_escapeAllowedCharacter_)
            @Js
            def PyJsHoisted_escapeDisallowedCharacter_(code, this, arguments, var=var):
                var = Scope({'code':code, 'this':this, 'arguments':arguments}, var)
                var.registers(['code'])
                if PyJsStrictEq(var.get('code'),Js(92)):
                    return Js('\\\\')
                if PyJsStrictEq(var.get('code'),Js(10)):
                    return Js('\\n')
                if PyJsStrictEq(var.get('code'),Js(13)):
                    return Js('\\r')
                if PyJsStrictEq(var.get('code'),Js(8232)):
                    return Js('\\u2028')
                if PyJsStrictEq(var.get('code'),Js(8233)):
                    return Js('\\u2029')
                PyJsTempException = JsToPyException(var.get('Error').create(Js('Incorrectly classified character')))
                raise PyJsTempException
            PyJsHoisted_escapeDisallowedCharacter_.func_name = 'escapeDisallowedCharacter'
            var.put('escapeDisallowedCharacter', PyJsHoisted_escapeDisallowedCharacter_)
            @Js
            def PyJsHoisted_escapeDirective_(str, this, arguments, var=var):
                var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
                var.registers(['quote', 'i', 'str', 'iz', 'code'])
                pass
                var.put('quote', (Js('"') if PyJsStrictEq(var.get('quotes'),Js('double')) else Js("'")))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('str').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.put('code', var.get('str').callprop('charCodeAt', var.get('i')))
                        if PyJsStrictEq(var.get('code'),Js(39)):
                            var.put('quote', Js('"'))
                            break
                        else:
                            if PyJsStrictEq(var.get('code'),Js(34)):
                                var.put('quote', Js("'"))
                                break
                            else:
                                if PyJsStrictEq(var.get('code'),Js(92)):
                                    var.put('i',Js(var.get('i').to_number())+Js(1))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                return ((var.get('quote')+var.get('str'))+var.get('quote'))
            PyJsHoisted_escapeDirective_.func_name = 'escapeDirective'
            var.put('escapeDirective', PyJsHoisted_escapeDirective_)
            @Js
            def PyJsHoisted_escapeString_(str, this, arguments, var=var):
                var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
                var.registers(['single', 'quote', 'i', 'str', 'singleQuotes', 'result', 'len', 'code', 'doubleQuotes'])
                var.put('result', Js(''))
                var.put('singleQuotes', Js(0.0))
                var.put('doubleQuotes', Js(0.0))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('str').get('length')))
                while (var.get('i')<var.get('len')):
                    try:
                        var.put('code', var.get('str').callprop('charCodeAt', var.get('i')))
                        if PyJsStrictEq(var.get('code'),Js(39)):
                            var.put('singleQuotes',Js(var.get('singleQuotes').to_number())+Js(1))
                        else:
                            if PyJsStrictEq(var.get('code'),Js(34)):
                                var.put('doubleQuotes',Js(var.get('doubleQuotes').to_number())+Js(1))
                            else:
                                if (PyJsStrictEq(var.get('code'),Js(47)) and var.get('json')):
                                    var.put('result', Js('\\'), '+')
                                else:
                                    if (var.get('esutils').get('code').callprop('isLineTerminator', var.get('code')) or PyJsStrictEq(var.get('code'),Js(92))):
                                        var.put('result', var.get('escapeDisallowedCharacter')(var.get('code')), '+')
                                        continue
                                    else:
                                        if (var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('code')).neg() and ((var.get('json') and (var.get('code')<Js(32))) or ((var.get('json').neg() and var.get('escapeless').neg()) and ((var.get('code')<Js(32)) or (var.get('code')>Js(126)))))):
                                            var.put('result', var.get('escapeAllowedCharacter')(var.get('code'), var.get('str').callprop('charCodeAt', (var.get('i')+Js(1.0)))), '+')
                                            continue
                        var.put('result', var.get('String').callprop('fromCharCode', var.get('code')), '+')
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                var.put('single', (PyJsStrictEq(var.get('quotes'),Js('double')) or (PyJsStrictEq(var.get('quotes'),Js('auto')) and (var.get('doubleQuotes')<var.get('singleQuotes')))).neg())
                var.put('quote', (Js("'") if var.get('single') else Js('"')))
                if (var.get('singleQuotes') if var.get('single') else var.get('doubleQuotes')).neg():
                    return ((var.get('quote')+var.get('result'))+var.get('quote'))
                var.put('str', var.get('result'))
                var.put('result', var.get('quote'))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('str').get('length')))
                while (var.get('i')<var.get('len')):
                    try:
                        var.put('code', var.get('str').callprop('charCodeAt', var.get('i')))
                        if ((PyJsStrictEq(var.get('code'),Js(39)) and var.get('single')) or (PyJsStrictEq(var.get('code'),Js(34)) and var.get('single').neg())):
                            var.put('result', Js('\\'), '+')
                        var.put('result', var.get('String').callprop('fromCharCode', var.get('code')), '+')
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                return (var.get('result')+var.get('quote'))
            PyJsHoisted_escapeString_.func_name = 'escapeString'
            var.put('escapeString', PyJsHoisted_escapeString_)
            @Js
            def PyJsHoisted_flattenToString_(arr, this, arguments, var=var):
                var = Scope({'arr':arr, 'this':this, 'arguments':arguments}, var)
                var.registers(['arr', 'i', 'iz', 'result', 'elem'])
                var.put('result', Js(''))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('arr').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.put('elem', var.get('arr').get(var.get('i')))
                        var.put('result', (var.get('flattenToString')(var.get('elem')) if var.get('Array').callprop('isArray', var.get('elem')) else var.get('elem')), '+')
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                return var.get('result')
            PyJsHoisted_flattenToString_.func_name = 'flattenToString'
            var.put('flattenToString', PyJsHoisted_flattenToString_)
            @Js
            def PyJsHoisted_toSourceNodeWhenNeeded_(generated, node, this, arguments, var=var):
                var = Scope({'generated':generated, 'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['node', 'generated'])
                if var.get('sourceMap').neg():
                    if var.get('Array').callprop('isArray', var.get('generated')):
                        return var.get('flattenToString')(var.get('generated'))
                    else:
                        return var.get('generated')
                if (var.get('node')==var.get(u"null")):
                    if var.get('generated').instanceof(var.get('SourceNode')):
                        return var.get('generated')
                    else:
                        PyJs_Object_15_ = Js({})
                        var.put('node', PyJs_Object_15_)
                if (var.get('node').get('loc')==var.get(u"null")):
                    return var.get('SourceNode').create(var.get(u"null"), var.get(u"null"), var.get('sourceMap'), var.get('generated'), (var.get('node').get('name') or var.get(u"null")))
                return var.get('SourceNode').create(var.get('node').get('loc').get('start').get('line'), var.get('node').get('loc').get('start').get('column'), ((var.get('node').get('loc').get('source') or var.get(u"null")) if PyJsStrictEq(var.get('sourceMap'),Js(True)) else var.get('sourceMap')), var.get('generated'), (var.get('node').get('name') or var.get(u"null")))
            PyJsHoisted_toSourceNodeWhenNeeded_.func_name = 'toSourceNodeWhenNeeded'
            var.put('toSourceNodeWhenNeeded', PyJsHoisted_toSourceNodeWhenNeeded_)
            @Js
            def PyJsHoisted_noEmptySpace_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return (var.get('space') if var.get('space') else Js(' '))
            PyJsHoisted_noEmptySpace_.func_name = 'noEmptySpace'
            var.put('noEmptySpace', PyJsHoisted_noEmptySpace_)
            @Js
            def PyJsHoisted_join_(left, right, this, arguments, var=var):
                var = Scope({'left':left, 'right':right, 'this':this, 'arguments':arguments}, var)
                var.registers(['leftSource', 'right', 'left', 'rightCharCode', 'leftCharCode', 'rightSource'])
                pass
                var.put('leftSource', var.get('toSourceNodeWhenNeeded')(var.get('left')).callprop('toString'))
                if PyJsStrictEq(var.get('leftSource').get('length'),Js(0.0)):
                    return Js([var.get('right')])
                var.put('rightSource', var.get('toSourceNodeWhenNeeded')(var.get('right')).callprop('toString'))
                if PyJsStrictEq(var.get('rightSource').get('length'),Js(0.0)):
                    return Js([var.get('left')])
                var.put('leftCharCode', var.get('leftSource').callprop('charCodeAt', (var.get('leftSource').get('length')-Js(1.0))))
                var.put('rightCharCode', var.get('rightSource').callprop('charCodeAt', Js(0.0)))
                def PyJs_LONG_16_(var=var):
                    return ((((PyJsStrictEq(var.get('leftCharCode'),Js(43)) or PyJsStrictEq(var.get('leftCharCode'),Js(45))) and PyJsStrictEq(var.get('leftCharCode'),var.get('rightCharCode'))) or (var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('leftCharCode')) and var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('rightCharCode')))) or (PyJsStrictEq(var.get('leftCharCode'),Js(47)) and PyJsStrictEq(var.get('rightCharCode'),Js(105))))
                if PyJs_LONG_16_():
                    return Js([var.get('left'), var.get('noEmptySpace')(), var.get('right')])
                else:
                    if (((var.get('esutils').get('code').callprop('isWhiteSpace', var.get('leftCharCode')) or var.get('esutils').get('code').callprop('isLineTerminator', var.get('leftCharCode'))) or var.get('esutils').get('code').callprop('isWhiteSpace', var.get('rightCharCode'))) or var.get('esutils').get('code').callprop('isLineTerminator', var.get('rightCharCode'))):
                        return Js([var.get('left'), var.get('right')])
                return Js([var.get('left'), var.get('space'), var.get('right')])
            PyJsHoisted_join_.func_name = 'join'
            var.put('join', PyJsHoisted_join_)
            @Js
            def PyJsHoisted_addIndent_(stmt, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'this':this, 'arguments':arguments}, var)
                var.registers(['stmt'])
                return Js([var.get('base'), var.get('stmt')])
            PyJsHoisted_addIndent_.func_name = 'addIndent'
            var.put('addIndent', PyJsHoisted_addIndent_)
            @Js
            def PyJsHoisted_withIndent_(fn, this, arguments, var=var):
                var = Scope({'fn':fn, 'this':this, 'arguments':arguments}, var)
                var.registers(['previousBase', 'fn'])
                pass
                var.put('previousBase', var.get('base'))
                var.put('base', var.get('indent'), '+')
                var.get('fn')(var.get('base'))
                var.put('base', var.get('previousBase'))
            PyJsHoisted_withIndent_.func_name = 'withIndent'
            var.put('withIndent', PyJsHoisted_withIndent_)
            @Js
            def PyJsHoisted_calculateSpaces_(str, this, arguments, var=var):
                var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
                var.registers(['i', 'str'])
                pass
                #for JS loop
                var.put('i', (var.get('str').get('length')-Js(1.0)))
                while (var.get('i')>=Js(0.0)):
                    try:
                        if var.get('esutils').get('code').callprop('isLineTerminator', var.get('str').callprop('charCodeAt', var.get('i'))):
                            break
                    finally:
                            var.put('i',Js(var.get('i').to_number())-Js(1))
                return ((var.get('str').get('length')-Js(1.0))-var.get('i'))
            PyJsHoisted_calculateSpaces_.func_name = 'calculateSpaces'
            var.put('calculateSpaces', PyJsHoisted_calculateSpaces_)
            @Js
            def PyJsHoisted_adjustMultilineComment_(value, specialBase, this, arguments, var=var):
                var = Scope({'value':value, 'specialBase':specialBase, 'this':this, 'arguments':arguments}, var)
                var.registers(['value', 'line', 'i', 'specialBase', 'spaces', 'sn', 'len', 'previousBase', 'j', 'array'])
                pass
                var.put('array', var.get('value').callprop('split', JsRegExp('/\\r\\n|[\\r\\n]/')))
                var.put('spaces', var.get('Number').get('MAX_VALUE'))
                #for JS loop
                PyJsComma(var.put('i', Js(1.0)),var.put('len', var.get('array').get('length')))
                while (var.get('i')<var.get('len')):
                    try:
                        var.put('line', var.get('array').get(var.get('i')))
                        var.put('j', Js(0.0))
                        while ((var.get('j')<var.get('line').get('length')) and var.get('esutils').get('code').callprop('isWhiteSpace', var.get('line').callprop('charCodeAt', var.get('j')))):
                            var.put('j',Js(var.get('j').to_number())+Js(1))
                        if (var.get('spaces')>var.get('j')):
                            var.put('spaces', var.get('j'))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                if PyJsStrictNeq(var.get('specialBase',throw=False).typeof(),Js('undefined')):
                    var.put('previousBase', var.get('base'))
                    if PyJsStrictEq(var.get('array').get('1').get(var.get('spaces')),Js('*')):
                        var.put('specialBase', Js(' '), '+')
                    var.put('base', var.get('specialBase'))
                else:
                    if (var.get('spaces')&Js(1.0)):
                        var.put('spaces',Js(var.get('spaces').to_number())-Js(1))
                    var.put('previousBase', var.get('base'))
                #for JS loop
                PyJsComma(var.put('i', Js(1.0)),var.put('len', var.get('array').get('length')))
                while (var.get('i')<var.get('len')):
                    try:
                        var.put('sn', var.get('toSourceNodeWhenNeeded')(var.get('addIndent')(var.get('array').get(var.get('i')).callprop('slice', var.get('spaces')))))
                        var.get('array').put(var.get('i'), (var.get('sn').callprop('join', Js('')) if var.get('sourceMap') else var.get('sn')))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                var.put('base', var.get('previousBase'))
                return var.get('array').callprop('join', Js('\n'))
            PyJsHoisted_adjustMultilineComment_.func_name = 'adjustMultilineComment'
            var.put('adjustMultilineComment', PyJsHoisted_adjustMultilineComment_)
            @Js
            def PyJsHoisted_generateComment_(comment, specialBase, this, arguments, var=var):
                var = Scope({'comment':comment, 'specialBase':specialBase, 'this':this, 'arguments':arguments}, var)
                var.registers(['comment', 'result', 'specialBase'])
                if PyJsStrictEq(var.get('comment').get('type'),Js('Line')):
                    if var.get('endsWithLineTerminator')(var.get('comment').get('value')):
                        return (Js('//')+var.get('comment').get('value'))
                    else:
                        var.put('result', (Js('//')+var.get('comment').get('value')))
                        if var.get('preserveBlankLines').neg():
                            var.put('result', Js('\n'), '+')
                        return var.get('result')
                if (var.get('extra').get('format').get('indent').get('adjustMultilineComment') and JsRegExp('/[\\n\\r]/').callprop('test', var.get('comment').get('value'))):
                    return var.get('adjustMultilineComment')(((Js('/*')+var.get('comment').get('value'))+Js('*/')), var.get('specialBase'))
                return ((Js('/*')+var.get('comment').get('value'))+Js('*/'))
            PyJsHoisted_generateComment_.func_name = 'generateComment'
            var.put('generateComment', PyJsHoisted_generateComment_)
            @Js
            def PyJsHoisted_addComments_(stmt, result, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'result':result, 'this':this, 'arguments':arguments}, var)
                var.registers(['tailingToStatement', 'comment', 'range', 'i', 'stmt', 'specialBase', 'fragment', 'prefix', 'suffix', 'extRange', 'result', 'prevRange', 'len', 'count', 'save', 'infix'])
                pass
                if (var.get('stmt').get('leadingComments') and (var.get('stmt').get('leadingComments').get('length')>Js(0.0))):
                    var.put('save', var.get('result'))
                    if var.get('preserveBlankLines'):
                        var.put('comment', var.get('stmt').get('leadingComments').get('0'))
                        var.put('result', Js([]))
                        var.put('extRange', var.get('comment').get('extendedRange'))
                        var.put('range', var.get('comment').get('range'))
                        var.put('prefix', var.get('sourceCode').callprop('substring', var.get('extRange').get('0'), var.get('range').get('0')))
                        var.put('count', (var.get('prefix').callprop('match', JsRegExp('/\\n/g')) or Js([])).get('length'))
                        if (var.get('count')>Js(0.0)):
                            var.get('result').callprop('push', var.get('stringRepeat')(Js('\n'), var.get('count')))
                            var.get('result').callprop('push', var.get('addIndent')(var.get('generateComment')(var.get('comment'))))
                        else:
                            var.get('result').callprop('push', var.get('prefix'))
                            var.get('result').callprop('push', var.get('generateComment')(var.get('comment')))
                        var.put('prevRange', var.get('range'))
                        #for JS loop
                        PyJsComma(var.put('i', Js(1.0)),var.put('len', var.get('stmt').get('leadingComments').get('length')))
                        while (var.get('i')<var.get('len')):
                            try:
                                var.put('comment', var.get('stmt').get('leadingComments').get(var.get('i')))
                                var.put('range', var.get('comment').get('range'))
                                var.put('infix', var.get('sourceCode').callprop('substring', var.get('prevRange').get('1'), var.get('range').get('0')))
                                var.put('count', (var.get('infix').callprop('match', JsRegExp('/\\n/g')) or Js([])).get('length'))
                                var.get('result').callprop('push', var.get('stringRepeat')(Js('\n'), var.get('count')))
                                var.get('result').callprop('push', var.get('addIndent')(var.get('generateComment')(var.get('comment'))))
                                var.put('prevRange', var.get('range'))
                            finally:
                                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                        var.put('suffix', var.get('sourceCode').callprop('substring', var.get('range').get('1'), var.get('extRange').get('1')))
                        var.put('count', (var.get('suffix').callprop('match', JsRegExp('/\\n/g')) or Js([])).get('length'))
                        var.get('result').callprop('push', var.get('stringRepeat')(Js('\n'), var.get('count')))
                    else:
                        var.put('comment', var.get('stmt').get('leadingComments').get('0'))
                        var.put('result', Js([]))
                        if ((var.get('safeConcatenation') and PyJsStrictEq(var.get('stmt').get('type'),var.get('Syntax').get('Program'))) and PyJsStrictEq(var.get('stmt').get('body').get('length'),Js(0.0))):
                            var.get('result').callprop('push', Js('\n'))
                        var.get('result').callprop('push', var.get('generateComment')(var.get('comment')))
                        if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg():
                            var.get('result').callprop('push', Js('\n'))
                        #for JS loop
                        PyJsComma(var.put('i', Js(1.0)),var.put('len', var.get('stmt').get('leadingComments').get('length')))
                        while (var.get('i')<var.get('len')):
                            try:
                                var.put('comment', var.get('stmt').get('leadingComments').get(var.get('i')))
                                var.put('fragment', Js([var.get('generateComment')(var.get('comment'))]))
                                if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg():
                                    var.get('fragment').callprop('push', Js('\n'))
                                var.get('result').callprop('push', var.get('addIndent')(var.get('fragment')))
                            finally:
                                    var.put('i',Js(var.get('i').to_number())+Js(1))
                    var.get('result').callprop('push', var.get('addIndent')(var.get('save')))
                if var.get('stmt').get('trailingComments'):
                    if var.get('preserveBlankLines'):
                        var.put('comment', var.get('stmt').get('trailingComments').get('0'))
                        var.put('extRange', var.get('comment').get('extendedRange'))
                        var.put('range', var.get('comment').get('range'))
                        var.put('prefix', var.get('sourceCode').callprop('substring', var.get('extRange').get('0'), var.get('range').get('0')))
                        var.put('count', (var.get('prefix').callprop('match', JsRegExp('/\\n/g')) or Js([])).get('length'))
                        if (var.get('count')>Js(0.0)):
                            var.get('result').callprop('push', var.get('stringRepeat')(Js('\n'), var.get('count')))
                            var.get('result').callprop('push', var.get('addIndent')(var.get('generateComment')(var.get('comment'))))
                        else:
                            var.get('result').callprop('push', var.get('prefix'))
                            var.get('result').callprop('push', var.get('generateComment')(var.get('comment')))
                    else:
                        var.put('tailingToStatement', var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg())
                        var.put('specialBase', var.get('stringRepeat')(Js(' '), var.get('calculateSpaces')(var.get('toSourceNodeWhenNeeded')(Js([var.get('base'), var.get('result'), var.get('indent')])).callprop('toString'))))
                        #for JS loop
                        PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('stmt').get('trailingComments').get('length')))
                        while (var.get('i')<var.get('len')):
                            try:
                                var.put('comment', var.get('stmt').get('trailingComments').get(var.get('i')))
                                if var.get('tailingToStatement'):
                                    if PyJsStrictEq(var.get('i'),Js(0.0)):
                                        var.put('result', Js([var.get('result'), var.get('indent')]))
                                    else:
                                        var.put('result', Js([var.get('result'), var.get('specialBase')]))
                                    var.get('result').callprop('push', var.get('generateComment')(var.get('comment'), var.get('specialBase')))
                                else:
                                    var.put('result', Js([var.get('result'), var.get('addIndent')(var.get('generateComment')(var.get('comment')))]))
                                if (PyJsStrictNeq(var.get('i'),(var.get('len')-Js(1.0))) and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg()):
                                    var.put('result', Js([var.get('result'), Js('\n')]))
                            finally:
                                    var.put('i',Js(var.get('i').to_number())+Js(1))
                return var.get('result')
            PyJsHoisted_addComments_.func_name = 'addComments'
            var.put('addComments', PyJsHoisted_addComments_)
            @Js
            def PyJsHoisted_generateBlankLines_(start, end, result, this, arguments, var=var):
                var = Scope({'start':start, 'end':end, 'result':result, 'this':this, 'arguments':arguments}, var)
                var.registers(['end', 'start', 'newlineCount', 'result', 'j'])
                var.put('newlineCount', Js(0.0))
                #for JS loop
                var.put('j', var.get('start'))
                while (var.get('j')<var.get('end')):
                    try:
                        if PyJsStrictEq(var.get('sourceCode').get(var.get('j')),Js('\n')):
                            (var.put('newlineCount',Js(var.get('newlineCount').to_number())+Js(1))-Js(1))
                    finally:
                            (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
                #for JS loop
                var.put('j', Js(1.0))
                while (var.get('j')<var.get('newlineCount')):
                    try:
                        var.get('result').callprop('push', var.get('newline'))
                    finally:
                            (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
            PyJsHoisted_generateBlankLines_.func_name = 'generateBlankLines'
            var.put('generateBlankLines', PyJsHoisted_generateBlankLines_)
            @Js
            def PyJsHoisted_parenthesize_(text, current, should, this, arguments, var=var):
                var = Scope({'text':text, 'current':current, 'should':should, 'this':this, 'arguments':arguments}, var)
                var.registers(['current', 'text', 'should'])
                if (var.get('current')<var.get('should')):
                    return Js([Js('('), var.get('text'), Js(')')])
                return var.get('text')
            PyJsHoisted_parenthesize_.func_name = 'parenthesize'
            var.put('parenthesize', PyJsHoisted_parenthesize_)
            @Js
            def PyJsHoisted_generateVerbatimString_(string, this, arguments, var=var):
                var = Scope({'string':string, 'this':this, 'arguments':arguments}, var)
                var.registers(['iz', 'i', 'result', 'string'])
                pass
                var.put('result', var.get('string').callprop('split', JsRegExp('/\\r\\n|\\n/')))
                #for JS loop
                PyJsComma(var.put('i', Js(1.0)),var.put('iz', var.get('result').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.get('result').put(var.get('i'), ((var.get('newline')+var.get('base'))+var.get('result').get(var.get('i'))))
                    finally:
                            (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
                return var.get('result')
            PyJsHoisted_generateVerbatimString_.func_name = 'generateVerbatimString'
            var.put('generateVerbatimString', PyJsHoisted_generateVerbatimString_)
            @Js
            def PyJsHoisted_generateVerbatim_(expr, precedence, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'this':this, 'arguments':arguments}, var)
                var.registers(['precedence', 'verbatim', 'prec', 'result', 'expr'])
                pass
                var.put('verbatim', var.get('expr').get(var.get('extra').get('verbatim')))
                if PyJsStrictEq(var.get('verbatim',throw=False).typeof(),Js('string')):
                    var.put('result', var.get('parenthesize')(var.get('generateVerbatimString')(var.get('verbatim')), var.get('Precedence').get('Sequence'), var.get('precedence')))
                else:
                    var.put('result', var.get('generateVerbatimString')(var.get('verbatim').get('content')))
                    var.put('prec', (var.get('verbatim').get('precedence') if (var.get('verbatim').get('precedence')!=var.get(u"null")) else var.get('Precedence').get('Sequence')))
                    var.put('result', var.get('parenthesize')(var.get('result'), var.get('prec'), var.get('precedence')))
                return var.get('toSourceNodeWhenNeeded')(var.get('result'), var.get('expr'))
            PyJsHoisted_generateVerbatim_.func_name = 'generateVerbatim'
            var.put('generateVerbatim', PyJsHoisted_generateVerbatim_)
            @Js
            def PyJsHoisted_CodeGenerator_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                pass
            PyJsHoisted_CodeGenerator_.func_name = 'CodeGenerator'
            var.put('CodeGenerator', PyJsHoisted_CodeGenerator_)
            @Js
            def PyJsHoisted_generateIdentifier_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['node'])
                return var.get('toSourceNodeWhenNeeded')(var.get('node').get('name'), var.get('node'))
            PyJsHoisted_generateIdentifier_.func_name = 'generateIdentifier'
            var.put('generateIdentifier', PyJsHoisted_generateIdentifier_)
            @Js
            def PyJsHoisted_generateAsyncPrefix_(node, spaceRequired, this, arguments, var=var):
                var = Scope({'node':node, 'spaceRequired':spaceRequired, 'this':this, 'arguments':arguments}, var)
                var.registers(['spaceRequired', 'node'])
                return ((Js('async')+(var.get('noEmptySpace')() if var.get('spaceRequired') else var.get('space'))) if var.get('node').get('async') else Js(''))
            PyJsHoisted_generateAsyncPrefix_.func_name = 'generateAsyncPrefix'
            var.put('generateAsyncPrefix', PyJsHoisted_generateAsyncPrefix_)
            @Js
            def PyJsHoisted_generateStarSuffix_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['isGenerator', 'node'])
                var.put('isGenerator', (var.get('node').get('generator') and var.get('extra').get('moz').get('starlessGenerator').neg()))
                return ((Js('*')+var.get('space')) if var.get('isGenerator') else Js(''))
            PyJsHoisted_generateStarSuffix_.func_name = 'generateStarSuffix'
            var.put('generateStarSuffix', PyJsHoisted_generateStarSuffix_)
            @Js
            def PyJsHoisted_generateMethodPrefix_(prop, this, arguments, var=var):
                var = Scope({'prop':prop, 'this':this, 'arguments':arguments}, var)
                var.registers(['prop', 'prefix', 'func'])
                var.put('func', var.get('prop').get('value'))
                var.put('prefix', Js(''))
                if var.get('func').get('async'):
                    var.put('prefix', var.get('generateAsyncPrefix')(var.get('func'), var.get('prop').get('computed').neg()), '+')
                if var.get('func').get('generator'):
                    var.put('prefix', (Js('*') if var.get('generateStarSuffix')(var.get('func')) else Js('')), '+')
                return var.get('prefix')
            PyJsHoisted_generateMethodPrefix_.func_name = 'generateMethodPrefix'
            var.put('generateMethodPrefix', PyJsHoisted_generateMethodPrefix_)
            @Js
            def PyJsHoisted_generateInternal_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['codegen', 'node'])
                pass
                var.put('codegen', var.get('CodeGenerator').create())
                if var.get('isStatement')(var.get('node')):
                    return var.get('codegen').callprop('generateStatement', var.get('node'), var.get('S_TFFF'))
                if var.get('isExpression')(var.get('node')):
                    return var.get('codegen').callprop('generateExpression', var.get('node'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))
                PyJsTempException = JsToPyException(var.get('Error').create((Js('Unknown node type: ')+var.get('node').get('type'))))
                raise PyJsTempException
            PyJsHoisted_generateInternal_.func_name = 'generateInternal'
            var.put('generateInternal', PyJsHoisted_generateInternal_)
            @Js
            def PyJsHoisted_generate_(node, options, this, arguments, var=var):
                var = Scope({'node':node, 'options':options, 'this':this, 'arguments':arguments}, var)
                var.registers(['options', 'node', 'result', 'defaultOptions', 'pair'])
                var.put('defaultOptions', var.get('getDefaultOptions')())
                if (var.get('options')!=var.get(u"null")):
                    if PyJsStrictEq(var.get('options').get('indent').typeof(),Js('string')):
                        var.get('defaultOptions').get('format').get('indent').put('style', var.get('options').get('indent'))
                    if PyJsStrictEq(var.get('options').get('base').typeof(),Js('number')):
                        var.get('defaultOptions').get('format').get('indent').put('base', var.get('options').get('base'))
                    var.put('options', var.get('updateDeeply')(var.get('defaultOptions'), var.get('options')))
                    var.put('indent', var.get('options').get('format').get('indent').get('style'))
                    if PyJsStrictEq(var.get('options').get('base').typeof(),Js('string')):
                        var.put('base', var.get('options').get('base'))
                    else:
                        var.put('base', var.get('stringRepeat')(var.get('indent'), var.get('options').get('format').get('indent').get('base')))
                else:
                    var.put('options', var.get('defaultOptions'))
                    var.put('indent', var.get('options').get('format').get('indent').get('style'))
                    var.put('base', var.get('stringRepeat')(var.get('indent'), var.get('options').get('format').get('indent').get('base')))
                var.put('json', var.get('options').get('format').get('json'))
                var.put('renumber', var.get('options').get('format').get('renumber'))
                var.put('hexadecimal', (Js(False) if var.get('json') else var.get('options').get('format').get('hexadecimal')))
                var.put('quotes', (Js('double') if var.get('json') else var.get('options').get('format').get('quotes')))
                var.put('escapeless', var.get('options').get('format').get('escapeless'))
                var.put('newline', var.get('options').get('format').get('newline'))
                var.put('space', var.get('options').get('format').get('space'))
                if var.get('options').get('format').get('compact'):
                    var.put('newline', var.put('space', var.put('indent', var.put('base', Js('')))))
                var.put('parentheses', var.get('options').get('format').get('parentheses'))
                var.put('semicolons', var.get('options').get('format').get('semicolons'))
                var.put('safeConcatenation', var.get('options').get('format').get('safeConcatenation'))
                var.put('directive', var.get('options').get('directive'))
                var.put('parse', (var.get(u"null") if var.get('json') else var.get('options').get('parse')))
                var.put('sourceMap', var.get('options').get('sourceMap'))
                var.put('sourceCode', var.get('options').get('sourceCode'))
                var.put('preserveBlankLines', (var.get('options').get('format').get('preserveBlankLines') and PyJsStrictNeq(var.get('sourceCode'),var.get(u"null"))))
                var.put('extra', var.get('options'))
                if var.get('sourceMap'):
                    if var.get('exports').get('browser').neg():
                        var.put('SourceNode', var.get('require')(Js('source-map')).get('SourceNode'))
                    else:
                        var.put('SourceNode', var.get('global').get('sourceMap').get('SourceNode'))
                var.put('result', var.get('generateInternal')(var.get('node')))
                if var.get('sourceMap').neg():
                    PyJs_Object_124_ = Js({'code':var.get('result').callprop('toString'),'map':var.get(u"null")})
                    var.put('pair', PyJs_Object_124_)
                    return (var.get('pair') if var.get('options').get('sourceMapWithCode') else var.get('pair').get('code'))
                PyJs_Object_125_ = Js({'file':var.get('options').get('file'),'sourceRoot':var.get('options').get('sourceMapRoot')})
                var.put('pair', var.get('result').callprop('toStringWithSourceMap', PyJs_Object_125_))
                if var.get('options').get('sourceContent'):
                    var.get('pair').get('map').callprop('setSourceContent', var.get('options').get('sourceMap'), var.get('options').get('sourceContent'))
                if var.get('options').get('sourceMapWithCode'):
                    return var.get('pair')
                return var.get('pair').get('map').callprop('toString')
            PyJsHoisted_generate_.func_name = 'generate'
            var.put('generate', PyJsHoisted_generate_)
            Js('use strict')
            pass
            var.put('estraverse', var.get('require')(Js('estraverse')))
            var.put('esutils', var.get('require')(Js('esutils')))
            var.put('Syntax', var.get('estraverse').get('Syntax'))
            pass
            pass
            PyJs_Object_7_ = Js({'Sequence':Js(0.0),'Yield':Js(1.0),'Assignment':Js(1.0),'Conditional':Js(2.0),'ArrowFunction':Js(2.0),'LogicalOR':Js(3.0),'LogicalAND':Js(4.0),'BitwiseOR':Js(5.0),'BitwiseXOR':Js(6.0),'BitwiseAND':Js(7.0),'Equality':Js(8.0),'Relational':Js(9.0),'BitwiseSHIFT':Js(10.0),'Additive':Js(11.0),'Multiplicative':Js(12.0),'Await':Js(13.0),'Unary':Js(13.0),'Postfix':Js(14.0),'Call':Js(15.0),'New':Js(16.0),'TaggedTemplate':Js(17.0),'Member':Js(18.0),'Primary':Js(19.0)})
            var.put('Precedence', PyJs_Object_7_)
            PyJs_Object_8_ = Js({'||':var.get('Precedence').get('LogicalOR'),'&&':var.get('Precedence').get('LogicalAND'),'|':var.get('Precedence').get('BitwiseOR'),'^':var.get('Precedence').get('BitwiseXOR'),'&':var.get('Precedence').get('BitwiseAND'),'==':var.get('Precedence').get('Equality'),'!=':var.get('Precedence').get('Equality'),'===':var.get('Precedence').get('Equality'),'!==':var.get('Precedence').get('Equality'),'is':var.get('Precedence').get('Equality'),'isnt':var.get('Precedence').get('Equality'),'<':var.get('Precedence').get('Relational'),'>':var.get('Precedence').get('Relational'),'<=':var.get('Precedence').get('Relational'),'>=':var.get('Precedence').get('Relational'),'in':var.get('Precedence').get('Relational'),'instanceof':var.get('Precedence').get('Relational'),'<<':var.get('Precedence').get('BitwiseSHIFT'),'>>':var.get('Precedence').get('BitwiseSHIFT'),'>>>':var.get('Precedence').get('BitwiseSHIFT'),'+':var.get('Precedence').get('Additive'),'-':var.get('Precedence').get('Additive'),'*':var.get('Precedence').get('Multiplicative'),'%':var.get('Precedence').get('Multiplicative'),'/':var.get('Precedence').get('Multiplicative')})
            var.put('BinaryPrecedence', PyJs_Object_8_)
            var.put('F_ALLOW_IN', Js(1.0))
            var.put('F_ALLOW_CALL', (Js(1.0)<<Js(1.0)))
            var.put('F_ALLOW_UNPARATH_NEW', (Js(1.0)<<Js(2.0)))
            var.put('F_FUNC_BODY', (Js(1.0)<<Js(3.0)))
            var.put('F_DIRECTIVE_CTX', (Js(1.0)<<Js(4.0)))
            var.put('F_SEMICOLON_OPT', (Js(1.0)<<Js(5.0)))
            var.put('E_FTT', (var.get('F_ALLOW_CALL')|var.get('F_ALLOW_UNPARATH_NEW')))
            var.put('E_TTF', (var.get('F_ALLOW_IN')|var.get('F_ALLOW_CALL')))
            var.put('E_TTT', ((var.get('F_ALLOW_IN')|var.get('F_ALLOW_CALL'))|var.get('F_ALLOW_UNPARATH_NEW')))
            var.put('E_TFF', var.get('F_ALLOW_IN'))
            var.put('E_FFT', var.get('F_ALLOW_UNPARATH_NEW'))
            var.put('E_TFT', (var.get('F_ALLOW_IN')|var.get('F_ALLOW_UNPARATH_NEW')))
            var.put('S_TFFF', var.get('F_ALLOW_IN'))
            var.put('S_TFFT', (var.get('F_ALLOW_IN')|var.get('F_SEMICOLON_OPT')))
            var.put('S_FFFF', Js(0))
            var.put('S_TFTF', (var.get('F_ALLOW_IN')|var.get('F_DIRECTIVE_CTX')))
            var.put('S_TTFF', (var.get('F_ALLOW_IN')|var.get('F_FUNC_BODY')))
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            pass
            @Js
            def PyJs_anonymous_17_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'noLeadingComment', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                var.put('noLeadingComment', (var.get('extra').get('comment').neg() or var.get('stmt').get('leadingComments').neg()))
                if (PyJsStrictEq(var.get('stmt').get('type'),var.get('Syntax').get('BlockStatement')) and var.get('noLeadingComment')):
                    return Js([var.get('space'), var.get(u"this").callprop('generateStatement', var.get('stmt'), var.get('flags'))])
                if (PyJsStrictEq(var.get('stmt').get('type'),var.get('Syntax').get('EmptyStatement')) and var.get('noLeadingComment')):
                    return Js(';')
                @Js
                def PyJs_anonymous_18_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([var.get('newline'), var.get('addIndent')(var.get('that').callprop('generateStatement', var.get('stmt'), var.get('flags')))]))
                PyJs_anonymous_18_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_18_)
                return var.get('result')
            PyJs_anonymous_17_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('maybeBlock', PyJs_anonymous_17_)
            @Js
            def PyJs_anonymous_19_(stmt, result, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'result':result, 'this':this, 'arguments':arguments}, var)
                var.registers(['result', 'stmt', 'ends'])
                var.put('ends', var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')))
                if ((PyJsStrictEq(var.get('stmt').get('type'),var.get('Syntax').get('BlockStatement')) and (var.get('extra').get('comment').neg() or var.get('stmt').get('leadingComments').neg())) and var.get('ends').neg()):
                    return Js([var.get('result'), var.get('space')])
                if var.get('ends'):
                    return Js([var.get('result'), var.get('base')])
                return Js([var.get('result'), var.get('newline'), var.get('base')])
            PyJs_anonymous_19_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('maybeBlockSuffix', PyJs_anonymous_19_)
            pass
            pass
            pass
            pass
            @Js
            def PyJs_anonymous_20_(node, precedence, flags, this, arguments, var=var):
                var = Scope({'node':node, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'node', 'precedence'])
                if PyJsStrictEq(var.get('node').get('type'),var.get('Syntax').get('Identifier')):
                    return var.get('generateIdentifier')(var.get('node'))
                return var.get(u"this").callprop('generateExpression', var.get('node'), var.get('precedence'), var.get('flags'))
            PyJs_anonymous_20_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generatePattern', PyJs_anonymous_20_)
            @Js
            def PyJs_anonymous_21_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['hasDefault', 'node', 'i', 'iz', 'result'])
                pass
                var.put('hasDefault', Js(False))
                def PyJs_LONG_22_(var=var):
                    return ((((PyJsStrictEq(var.get('node').get('type'),var.get('Syntax').get('ArrowFunctionExpression')) and var.get('node').get('rest').neg()) and (var.get('node').get('defaults').neg() or PyJsStrictEq(var.get('node').get('defaults').get('length'),Js(0.0)))) and PyJsStrictEq(var.get('node').get('params').get('length'),Js(1.0))) and PyJsStrictEq(var.get('node').get('params').get('0').get('type'),var.get('Syntax').get('Identifier')))
                if PyJs_LONG_22_():
                    var.put('result', Js([var.get('generateAsyncPrefix')(var.get('node'), Js(True)), var.get('generateIdentifier')(var.get('node').get('params').get('0'))]))
                else:
                    var.put('result', (Js([var.get('generateAsyncPrefix')(var.get('node'), Js(False))]) if PyJsStrictEq(var.get('node').get('type'),var.get('Syntax').get('ArrowFunctionExpression')) else Js([])))
                    var.get('result').callprop('push', Js('('))
                    if var.get('node').get('defaults'):
                        var.put('hasDefault', Js(True))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('node').get('params').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            if (var.get('hasDefault') and var.get('node').get('defaults').get(var.get('i'))):
                                var.get('result').callprop('push', var.get(u"this").callprop('generateAssignment', var.get('node').get('params').get(var.get('i')), var.get('node').get('defaults').get(var.get('i')), Js('='), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                            else:
                                var.get('result').callprop('push', var.get(u"this").callprop('generatePattern', var.get('node').get('params').get(var.get('i')), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                            if ((var.get('i')+Js(1.0))<var.get('iz')):
                                var.get('result').callprop('push', (Js(',')+var.get('space')))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                    if var.get('node').get('rest'):
                        if var.get('node').get('params').get('length'):
                            var.get('result').callprop('push', (Js(',')+var.get('space')))
                        var.get('result').callprop('push', Js('...'))
                        var.get('result').callprop('push', var.get('generateIdentifier')(var.get('node').get('rest')))
                    var.get('result').callprop('push', Js(')'))
                return var.get('result')
            PyJs_anonymous_21_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateFunctionParams', PyJs_anonymous_21_)
            @Js
            def PyJs_anonymous_23_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
                var.registers(['node', 'result', 'expr'])
                pass
                var.put('result', var.get(u"this").callprop('generateFunctionParams', var.get('node')))
                if PyJsStrictEq(var.get('node').get('type'),var.get('Syntax').get('ArrowFunctionExpression')):
                    var.get('result').callprop('push', var.get('space'))
                    var.get('result').callprop('push', Js('=>'))
                if var.get('node').get('expression'):
                    var.get('result').callprop('push', var.get('space'))
                    var.put('expr', var.get(u"this").callprop('generateExpression', var.get('node').get('body'), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                    if PyJsStrictEq(var.get('expr').callprop('toString').callprop('charAt', Js(0.0)),Js('{')):
                        var.put('expr', Js([Js('('), var.get('expr'), Js(')')]))
                    var.get('result').callprop('push', var.get('expr'))
                else:
                    var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('node').get('body'), var.get('S_TTFF')))
                return var.get('result')
            PyJs_anonymous_23_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateFunctionBody', PyJs_anonymous_23_)
            @Js
            def PyJs_anonymous_24_(operator, stmt, flags, this, arguments, var=var):
                var = Scope({'operator':operator, 'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'operator', 'that', 'result', 'stmt'])
                var.put('result', Js([(((Js('for')+var.get('space'))+((Js('await')+var.get('space')) if var.get('stmt').get('await') else Js('')))+Js('('))]))
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_25_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if PyJsStrictEq(var.get('stmt').get('left').get('type'),var.get('Syntax').get('VariableDeclaration')):
                        @Js
                        def PyJs_anonymous_26_(this, arguments, var=var):
                            var = Scope({'this':this, 'arguments':arguments}, var)
                            var.registers([])
                            var.get('result').callprop('push', (var.get('stmt').get('left').get('kind')+var.get('noEmptySpace')()))
                            var.get('result').callprop('push', var.get('that').callprop('generateStatement', var.get('stmt').get('left').get('declarations').get('0'), var.get('S_FFFF')))
                        PyJs_anonymous_26_._set_name('anonymous')
                        var.get('withIndent')(PyJs_anonymous_26_)
                    else:
                        var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('left'), var.get('Precedence').get('Call'), var.get('E_TTT')))
                    var.put('result', var.get('join')(var.get('result'), var.get('operator')))
                    var.put('result', Js([var.get('join')(var.get('result'), var.get('that').callprop('generateExpression', var.get('stmt').get('right'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))), Js(')')]))
                PyJs_anonymous_25_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_25_)
                var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), var.get('flags')))
                return var.get('result')
            PyJs_anonymous_24_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateIterationForStatement', PyJs_anonymous_24_)
            @Js
            def PyJs_anonymous_27_(expr, computed, this, arguments, var=var):
                var = Scope({'expr':expr, 'computed':computed, 'this':this, 'arguments':arguments}, var)
                var.registers(['computed', 'result', 'expr'])
                var.put('result', Js([]))
                if var.get('computed'):
                    var.get('result').callprop('push', Js('['))
                var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                if var.get('computed'):
                    var.get('result').callprop('push', Js(']'))
                return var.get('result')
            PyJs_anonymous_27_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generatePropertyKey', PyJs_anonymous_27_)
            @Js
            def PyJs_anonymous_28_(left, right, operator, precedence, flags, this, arguments, var=var):
                var = Scope({'left':left, 'right':right, 'operator':operator, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['right', 'flags', 'precedence', 'operator', 'left'])
                if (var.get('Precedence').get('Assignment')<var.get('precedence')):
                    var.put('flags', var.get('F_ALLOW_IN'), '|')
                return var.get('parenthesize')(Js([var.get(u"this").callprop('generateExpression', var.get('left'), var.get('Precedence').get('Call'), var.get('flags')), ((var.get('space')+var.get('operator'))+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('right'), var.get('Precedence').get('Assignment'), var.get('flags'))]), var.get('Precedence').get('Assignment'), var.get('precedence'))
            PyJs_anonymous_28_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateAssignment', PyJs_anonymous_28_)
            @Js
            def PyJs_anonymous_29_(flags, this, arguments, var=var):
                var = Scope({'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags'])
                if (var.get('semicolons').neg() and (var.get('flags')&var.get('F_SEMICOLON_OPT'))):
                    return Js('')
                return Js(';')
            PyJs_anonymous_29_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('semicolon', PyJs_anonymous_29_)
            @Js
            def PyJs_BlockStatement_31_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'BlockStatement':PyJs_BlockStatement_31_}, var)
                var.registers(['range', 'flags', 'that', 'result', 'stmt', 'content'])
                var.put('result', Js([Js('{'), var.get('newline')]))
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_32_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'bodyFlags', 'i', 'fragment'])
                    if (PyJsStrictEq(var.get('stmt').get('body').get('length'),Js(0.0)) and var.get('preserveBlankLines')):
                        var.put('range', var.get('stmt').get('range'))
                        if ((var.get('range').get('1')-var.get('range').get('0'))>Js(2.0)):
                            var.put('content', var.get('sourceCode').callprop('substring', (var.get('range').get('0')+Js(1.0)), (var.get('range').get('1')-Js(1.0))))
                            if PyJsStrictEq(var.get('content').get('0'),Js('\n')):
                                var.put('result', Js([Js('{')]))
                            var.get('result').callprop('push', var.get('content'))
                    pass
                    var.put('bodyFlags', var.get('S_TFFF'))
                    if (var.get('flags')&var.get('F_FUNC_BODY')):
                        var.put('bodyFlags', var.get('F_DIRECTIVE_CTX'), '|')
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('body').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            if var.get('preserveBlankLines'):
                                if PyJsStrictEq(var.get('i'),Js(0.0)):
                                    if var.get('stmt').get('body').get('0').get('leadingComments'):
                                        var.put('range', var.get('stmt').get('body').get('0').get('leadingComments').get('0').get('extendedRange'))
                                        var.put('content', var.get('sourceCode').callprop('substring', var.get('range').get('0'), var.get('range').get('1')))
                                        if PyJsStrictEq(var.get('content').get('0'),Js('\n')):
                                            var.put('result', Js([Js('{')]))
                                    if var.get('stmt').get('body').get('0').get('leadingComments').neg():
                                        var.get('generateBlankLines')(var.get('stmt').get('range').get('0'), var.get('stmt').get('body').get('0').get('range').get('0'), var.get('result'))
                                if (var.get('i')>Js(0.0)):
                                    if (var.get('stmt').get('body').get((var.get('i')-Js(1.0))).get('trailingComments').neg() and var.get('stmt').get('body').get(var.get('i')).get('leadingComments').neg()):
                                        var.get('generateBlankLines')(var.get('stmt').get('body').get((var.get('i')-Js(1.0))).get('range').get('1'), var.get('stmt').get('body').get(var.get('i')).get('range').get('0'), var.get('result'))
                            if PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0))):
                                var.put('bodyFlags', var.get('F_SEMICOLON_OPT'), '|')
                            if (var.get('stmt').get('body').get(var.get('i')).get('leadingComments') and var.get('preserveBlankLines')):
                                var.put('fragment', var.get('that').callprop('generateStatement', var.get('stmt').get('body').get(var.get('i')), var.get('bodyFlags')))
                            else:
                                var.put('fragment', var.get('addIndent')(var.get('that').callprop('generateStatement', var.get('stmt').get('body').get(var.get('i')), var.get('bodyFlags'))))
                            var.get('result').callprop('push', var.get('fragment'))
                            if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg():
                                if (var.get('preserveBlankLines') and (var.get('i')<(var.get('iz')-Js(1.0)))):
                                    if var.get('stmt').get('body').get((var.get('i')+Js(1.0))).get('leadingComments').neg():
                                        var.get('result').callprop('push', var.get('newline'))
                                else:
                                    var.get('result').callprop('push', var.get('newline'))
                            if var.get('preserveBlankLines'):
                                if PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0))):
                                    if var.get('stmt').get('body').get(var.get('i')).get('trailingComments').neg():
                                        var.get('generateBlankLines')(var.get('stmt').get('body').get(var.get('i')).get('range').get('1'), var.get('stmt').get('range').get('1'), var.get('result'))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_32_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_32_)
                var.get('result').callprop('push', var.get('addIndent')(Js('}')))
                return var.get('result')
            PyJs_BlockStatement_31_._set_name('BlockStatement')
            @Js
            def PyJs_BreakStatement_33_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'BreakStatement':PyJs_BreakStatement_33_}, var)
                var.registers(['flags', 'stmt'])
                if var.get('stmt').get('label'):
                    return ((Js('break ')+var.get('stmt').get('label').get('name'))+var.get(u"this").callprop('semicolon', var.get('flags')))
                return (Js('break')+var.get(u"this").callprop('semicolon', var.get('flags')))
            PyJs_BreakStatement_33_._set_name('BreakStatement')
            @Js
            def PyJs_ContinueStatement_34_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ContinueStatement':PyJs_ContinueStatement_34_}, var)
                var.registers(['flags', 'stmt'])
                if var.get('stmt').get('label'):
                    return ((Js('continue ')+var.get('stmt').get('label').get('name'))+var.get(u"this").callprop('semicolon', var.get('flags')))
                return (Js('continue')+var.get(u"this").callprop('semicolon', var.get('flags')))
            PyJs_ContinueStatement_34_._set_name('ContinueStatement')
            @Js
            def PyJs_ClassBody_35_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ClassBody':PyJs_ClassBody_35_}, var)
                var.registers(['flags', 'that', 'result', 'stmt'])
                var.put('result', Js([Js('{'), var.get('newline')]))
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_36_(indent, this, arguments, var=var):
                    var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'i', 'indent'])
                    pass
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('body').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.get('result').callprop('push', var.get('indent'))
                            var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('body').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                            if ((var.get('i')+Js(1.0))<var.get('iz')):
                                var.get('result').callprop('push', var.get('newline'))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_36_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_36_)
                if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg():
                    var.get('result').callprop('push', var.get('newline'))
                var.get('result').callprop('push', var.get('base'))
                var.get('result').callprop('push', Js('}'))
                return var.get('result')
            PyJs_ClassBody_35_._set_name('ClassBody')
            @Js
            def PyJs_ClassDeclaration_37_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ClassDeclaration':PyJs_ClassDeclaration_37_}, var)
                var.registers(['flags', 'result', 'fragment', 'stmt'])
                pass
                var.put('result', Js([Js('class')]))
                if var.get('stmt').get('id'):
                    var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('id'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))))
                if var.get('stmt').get('superClass'):
                    var.put('fragment', var.get('join')(Js('extends'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('superClass'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))))
                    var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                var.get('result').callprop('push', var.get('space'))
                var.get('result').callprop('push', var.get(u"this").callprop('generateStatement', var.get('stmt').get('body'), var.get('S_TFFT')))
                return var.get('result')
            PyJs_ClassDeclaration_37_._set_name('ClassDeclaration')
            @Js
            def PyJs_DirectiveStatement_38_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'DirectiveStatement':PyJs_DirectiveStatement_38_}, var)
                var.registers(['flags', 'stmt'])
                if (var.get('extra').get('raw') and var.get('stmt').get('raw')):
                    return (var.get('stmt').get('raw')+var.get(u"this").callprop('semicolon', var.get('flags')))
                return (var.get('escapeDirective')(var.get('stmt').get('directive'))+var.get(u"this").callprop('semicolon', var.get('flags')))
            PyJs_DirectiveStatement_38_._set_name('DirectiveStatement')
            @Js
            def PyJs_DoWhileStatement_39_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'DoWhileStatement':PyJs_DoWhileStatement_39_}, var)
                var.registers(['flags', 'result', 'stmt'])
                var.put('result', var.get('join')(Js('do'), var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), var.get('S_TFFF'))))
                var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('body'), var.get('result')))
                return var.get('join')(var.get('result'), Js([((Js('while')+var.get('space'))+Js('(')), var.get(u"this").callprop('generateExpression', var.get('stmt').get('test'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), (Js(')')+var.get(u"this").callprop('semicolon', var.get('flags')))]))
            PyJs_DoWhileStatement_39_._set_name('DoWhileStatement')
            @Js
            def PyJs_CatchClause_40_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'CatchClause':PyJs_CatchClause_40_}, var)
                var.registers(['flags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_41_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers(['guard'])
                    pass
                    var.put('result', Js([((Js('catch')+var.get('space'))+Js('(')), var.get('that').callprop('generateExpression', var.get('stmt').get('param'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), Js(')')]))
                    if var.get('stmt').get('guard'):
                        var.put('guard', var.get('that').callprop('generateExpression', var.get('stmt').get('guard'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                        var.get('result').callprop('splice', Js(2.0), Js(0.0), Js(' if '), var.get('guard'))
                PyJs_anonymous_41_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_41_)
                var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), var.get('S_TFFF')))
                return var.get('result')
            PyJs_CatchClause_40_._set_name('CatchClause')
            @Js
            def PyJs_DebuggerStatement_42_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'DebuggerStatement':PyJs_DebuggerStatement_42_}, var)
                var.registers(['flags', 'stmt'])
                return (Js('debugger')+var.get(u"this").callprop('semicolon', var.get('flags')))
            PyJs_DebuggerStatement_42_._set_name('DebuggerStatement')
            @Js
            def PyJs_EmptyStatement_43_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'EmptyStatement':PyJs_EmptyStatement_43_}, var)
                var.registers(['flags', 'stmt'])
                return Js(';')
            PyJs_EmptyStatement_43_._set_name('EmptyStatement')
            @Js
            def PyJs_ExportDefaultDeclaration_44_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ExportDefaultDeclaration':PyJs_ExportDefaultDeclaration_44_}, var)
                var.registers(['flags', 'bodyFlags', 'result', 'stmt'])
                var.put('result', Js([Js('export')]))
                var.put('bodyFlags', (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF')))
                var.put('result', var.get('join')(var.get('result'), Js('default')))
                if var.get('isStatement')(var.get('stmt').get('declaration')):
                    var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('stmt').get('declaration'), var.get('bodyFlags'))))
                else:
                    var.put('result', var.get('join')(var.get('result'), (var.get(u"this").callprop('generateExpression', var.get('stmt').get('declaration'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))+var.get(u"this").callprop('semicolon', var.get('flags')))))
                return var.get('result')
            PyJs_ExportDefaultDeclaration_44_._set_name('ExportDefaultDeclaration')
            @Js
            def PyJs_ExportNamedDeclaration_45_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ExportNamedDeclaration':PyJs_ExportNamedDeclaration_45_}, var)
                var.registers(['flags', 'bodyFlags', 'that', 'result', 'stmt'])
                var.put('result', Js([Js('export')]))
                var.put('that', var.get(u"this"))
                var.put('bodyFlags', (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF')))
                if var.get('stmt').get('declaration'):
                    return var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('stmt').get('declaration'), var.get('bodyFlags')))
                if var.get('stmt').get('specifiers'):
                    if PyJsStrictEq(var.get('stmt').get('specifiers').get('length'),Js(0.0)):
                        var.put('result', var.get('join')(var.get('result'), ((Js('{')+var.get('space'))+Js('}'))))
                    else:
                        if PyJsStrictEq(var.get('stmt').get('specifiers').get('0').get('type'),var.get('Syntax').get('ExportBatchSpecifier')):
                            var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('specifiers').get('0'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))))
                        else:
                            var.put('result', var.get('join')(var.get('result'), Js('{')))
                            @Js
                            def PyJs_anonymous_46_(indent, this, arguments, var=var):
                                var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                                var.registers(['iz', 'i', 'indent'])
                                pass
                                var.get('result').callprop('push', var.get('newline'))
                                #for JS loop
                                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('specifiers').get('length')))
                                while (var.get('i')<var.get('iz')):
                                    try:
                                        var.get('result').callprop('push', var.get('indent'))
                                        var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('specifiers').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                                        if ((var.get('i')+Js(1.0))<var.get('iz')):
                                            var.get('result').callprop('push', (Js(',')+var.get('newline')))
                                    finally:
                                            var.put('i',Js(var.get('i').to_number())+Js(1))
                            PyJs_anonymous_46_._set_name('anonymous')
                            var.get('withIndent')(PyJs_anonymous_46_)
                            if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg():
                                var.get('result').callprop('push', var.get('newline'))
                            var.get('result').callprop('push', (var.get('base')+Js('}')))
                    if var.get('stmt').get('source'):
                        var.put('result', var.get('join')(var.get('result'), Js([(Js('from')+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('stmt').get('source'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), var.get(u"this").callprop('semicolon', var.get('flags'))])))
                    else:
                        var.get('result').callprop('push', var.get(u"this").callprop('semicolon', var.get('flags')))
                return var.get('result')
            PyJs_ExportNamedDeclaration_45_._set_name('ExportNamedDeclaration')
            @Js
            def PyJs_ExportAllDeclaration_47_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ExportAllDeclaration':PyJs_ExportAllDeclaration_47_}, var)
                var.registers(['flags', 'stmt'])
                return Js([(Js('export')+var.get('space')), (Js('*')+var.get('space')), (Js('from')+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('stmt').get('source'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), var.get(u"this").callprop('semicolon', var.get('flags'))])
            PyJs_ExportAllDeclaration_47_._set_name('ExportAllDeclaration')
            @Js
            def PyJs_ExpressionStatement_48_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ExpressionStatement':PyJs_ExpressionStatement_48_}, var)
                var.registers(['isFunctionPrefixed', 'isAsyncPrefixed', 'flags', 'fragment', 'isClassPrefixed', 'result', 'stmt'])
                @Js
                def PyJsHoisted_isClassPrefixed_(fragment, this, arguments, var=var):
                    var = Scope({'fragment':fragment, 'this':this, 'arguments':arguments}, var)
                    var.registers(['code', 'fragment'])
                    pass
                    if PyJsStrictNeq(var.get('fragment').callprop('slice', Js(0.0), Js(5.0)),Js('class')):
                        return Js(False)
                    var.put('code', var.get('fragment').callprop('charCodeAt', Js(5.0)))
                    return ((PyJsStrictEq(var.get('code'),Js(123)) or var.get('esutils').get('code').callprop('isWhiteSpace', var.get('code'))) or var.get('esutils').get('code').callprop('isLineTerminator', var.get('code')))
                PyJsHoisted_isClassPrefixed_.func_name = 'isClassPrefixed'
                var.put('isClassPrefixed', PyJsHoisted_isClassPrefixed_)
                @Js
                def PyJsHoisted_isFunctionPrefixed_(fragment, this, arguments, var=var):
                    var = Scope({'fragment':fragment, 'this':this, 'arguments':arguments}, var)
                    var.registers(['code', 'fragment'])
                    pass
                    if PyJsStrictNeq(var.get('fragment').callprop('slice', Js(0.0), Js(8.0)),Js('function')):
                        return Js(False)
                    var.put('code', var.get('fragment').callprop('charCodeAt', Js(8.0)))
                    return (((PyJsStrictEq(var.get('code'),Js(40)) or var.get('esutils').get('code').callprop('isWhiteSpace', var.get('code'))) or PyJsStrictEq(var.get('code'),Js(42))) or var.get('esutils').get('code').callprop('isLineTerminator', var.get('code')))
                PyJsHoisted_isFunctionPrefixed_.func_name = 'isFunctionPrefixed'
                var.put('isFunctionPrefixed', PyJsHoisted_isFunctionPrefixed_)
                @Js
                def PyJsHoisted_isAsyncPrefixed_(fragment, this, arguments, var=var):
                    var = Scope({'fragment':fragment, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'code', 'i', 'fragment'])
                    pass
                    if PyJsStrictNeq(var.get('fragment').callprop('slice', Js(0.0), Js(5.0)),Js('async')):
                        return Js(False)
                    if var.get('esutils').get('code').callprop('isWhiteSpace', var.get('fragment').callprop('charCodeAt', Js(5.0))).neg():
                        return Js(False)
                    #for JS loop
                    PyJsComma(var.put('i', Js(6.0)),var.put('iz', var.get('fragment').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            if var.get('esutils').get('code').callprop('isWhiteSpace', var.get('fragment').callprop('charCodeAt', var.get('i'))).neg():
                                break
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                    if PyJsStrictEq(var.get('i'),var.get('iz')):
                        return Js(False)
                    if PyJsStrictNeq(var.get('fragment').callprop('slice', var.get('i'), (var.get('i')+Js(8.0))),Js('function')):
                        return Js(False)
                    var.put('code', var.get('fragment').callprop('charCodeAt', (var.get('i')+Js(8.0))))
                    return (((PyJsStrictEq(var.get('code'),Js(40)) or var.get('esutils').get('code').callprop('isWhiteSpace', var.get('code'))) or PyJsStrictEq(var.get('code'),Js(42))) or var.get('esutils').get('code').callprop('isLineTerminator', var.get('code')))
                PyJsHoisted_isAsyncPrefixed_.func_name = 'isAsyncPrefixed'
                var.put('isAsyncPrefixed', PyJsHoisted_isAsyncPrefixed_)
                pass
                pass
                pass
                pass
                var.put('result', Js([var.get(u"this").callprop('generateExpression', var.get('stmt').get('expression'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))]))
                var.put('fragment', var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString'))
                def PyJs_LONG_49_(var=var):
                    return ((((PyJsStrictEq(var.get('fragment').callprop('charCodeAt', Js(0.0)),Js(123)) or var.get('isClassPrefixed')(var.get('fragment'))) or var.get('isFunctionPrefixed')(var.get('fragment'))) or var.get('isAsyncPrefixed')(var.get('fragment'))) or (((var.get('directive') and (var.get('flags')&var.get('F_DIRECTIVE_CTX'))) and PyJsStrictEq(var.get('stmt').get('expression').get('type'),var.get('Syntax').get('Literal'))) and PyJsStrictEq(var.get('stmt').get('expression').get('value').typeof(),Js('string'))))
                if PyJs_LONG_49_():
                    var.put('result', Js([Js('('), var.get('result'), (Js(')')+var.get(u"this").callprop('semicolon', var.get('flags')))]))
                else:
                    var.get('result').callprop('push', var.get(u"this").callprop('semicolon', var.get('flags')))
                return var.get('result')
            PyJs_ExpressionStatement_48_._set_name('ExpressionStatement')
            @Js
            def PyJs_ImportDeclaration_50_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ImportDeclaration':PyJs_ImportDeclaration_50_}, var)
                var.registers(['flags', 'cursor', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                if PyJsStrictEq(var.get('stmt').get('specifiers').get('length'),Js(0.0)):
                    return Js([Js('import'), var.get('space'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('source'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), var.get(u"this").callprop('semicolon', var.get('flags'))])
                var.put('result', Js([Js('import')]))
                var.put('cursor', Js(0.0))
                if PyJsStrictEq(var.get('stmt').get('specifiers').get(var.get('cursor')).get('type'),var.get('Syntax').get('ImportDefaultSpecifier')):
                    var.put('result', var.get('join')(var.get('result'), Js([var.get(u"this").callprop('generateExpression', var.get('stmt').get('specifiers').get(var.get('cursor')), var.get('Precedence').get('Sequence'), var.get('E_TTT'))])))
                    var.put('cursor',Js(var.get('cursor').to_number())+Js(1))
                if var.get('stmt').get('specifiers').get(var.get('cursor')):
                    if PyJsStrictNeq(var.get('cursor'),Js(0.0)):
                        var.get('result').callprop('push', Js(','))
                    if PyJsStrictEq(var.get('stmt').get('specifiers').get(var.get('cursor')).get('type'),var.get('Syntax').get('ImportNamespaceSpecifier')):
                        var.put('result', var.get('join')(var.get('result'), Js([var.get('space'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('specifiers').get(var.get('cursor')), var.get('Precedence').get('Sequence'), var.get('E_TTT'))])))
                    else:
                        var.get('result').callprop('push', (var.get('space')+Js('{')))
                        if PyJsStrictEq((var.get('stmt').get('specifiers').get('length')-var.get('cursor')),Js(1.0)):
                            var.get('result').callprop('push', var.get('space'))
                            var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('stmt').get('specifiers').get(var.get('cursor')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                            var.get('result').callprop('push', ((var.get('space')+Js('}'))+var.get('space')))
                        else:
                            @Js
                            def PyJs_anonymous_51_(indent, this, arguments, var=var):
                                var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                                var.registers(['iz', 'i', 'indent'])
                                pass
                                var.get('result').callprop('push', var.get('newline'))
                                #for JS loop
                                PyJsComma(var.put('i', var.get('cursor')),var.put('iz', var.get('stmt').get('specifiers').get('length')))
                                while (var.get('i')<var.get('iz')):
                                    try:
                                        var.get('result').callprop('push', var.get('indent'))
                                        var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('specifiers').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                                        if ((var.get('i')+Js(1.0))<var.get('iz')):
                                            var.get('result').callprop('push', (Js(',')+var.get('newline')))
                                    finally:
                                            var.put('i',Js(var.get('i').to_number())+Js(1))
                            PyJs_anonymous_51_._set_name('anonymous')
                            var.get('withIndent')(PyJs_anonymous_51_)
                            if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg():
                                var.get('result').callprop('push', var.get('newline'))
                            var.get('result').callprop('push', ((var.get('base')+Js('}'))+var.get('space')))
                var.put('result', var.get('join')(var.get('result'), Js([(Js('from')+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('stmt').get('source'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), var.get(u"this").callprop('semicolon', var.get('flags'))])))
                return var.get('result')
            PyJs_ImportDeclaration_50_._set_name('ImportDeclaration')
            @Js
            def PyJs_VariableDeclarator_52_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'VariableDeclarator':PyJs_VariableDeclarator_52_}, var)
                var.registers(['itemFlags', 'flags', 'stmt'])
                var.put('itemFlags', (var.get('E_TTT') if (var.get('flags')&var.get('F_ALLOW_IN')) else var.get('E_FTT')))
                if var.get('stmt').get('init'):
                    return Js([var.get(u"this").callprop('generateExpression', var.get('stmt').get('id'), var.get('Precedence').get('Assignment'), var.get('itemFlags')), var.get('space'), Js('='), var.get('space'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('init'), var.get('Precedence').get('Assignment'), var.get('itemFlags'))])
                return var.get(u"this").callprop('generatePattern', var.get('stmt').get('id'), var.get('Precedence').get('Assignment'), var.get('itemFlags'))
            PyJs_VariableDeclarator_52_._set_name('VariableDeclarator')
            @Js
            def PyJs_VariableDeclaration_53_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'VariableDeclaration':PyJs_VariableDeclaration_53_}, var)
                var.registers(['flags', 'node', 'i', 'iz', 'bodyFlags', 'that', 'result', 'stmt', 'block'])
                @Js
                def PyJsHoisted_block_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('node', var.get('stmt').get('declarations').get('0'))
                    if (var.get('extra').get('comment') and var.get('node').get('leadingComments')):
                        var.get('result').callprop('push', Js('\n'))
                        var.get('result').callprop('push', var.get('addIndent')(var.get('that').callprop('generateStatement', var.get('node'), var.get('bodyFlags'))))
                    else:
                        var.get('result').callprop('push', var.get('noEmptySpace')())
                        var.get('result').callprop('push', var.get('that').callprop('generateStatement', var.get('node'), var.get('bodyFlags')))
                    #for JS loop
                    PyJsComma(var.put('i', Js(1.0)),var.put('iz', var.get('stmt').get('declarations').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.put('node', var.get('stmt').get('declarations').get(var.get('i')))
                            if (var.get('extra').get('comment') and var.get('node').get('leadingComments')):
                                var.get('result').callprop('push', (Js(',')+var.get('newline')))
                                var.get('result').callprop('push', var.get('addIndent')(var.get('that').callprop('generateStatement', var.get('node'), var.get('bodyFlags'))))
                            else:
                                var.get('result').callprop('push', (Js(',')+var.get('space')))
                                var.get('result').callprop('push', var.get('that').callprop('generateStatement', var.get('node'), var.get('bodyFlags')))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJsHoisted_block_.func_name = 'block'
                var.put('block', PyJsHoisted_block_)
                var.put('that', var.get(u"this"))
                var.put('result', Js([var.get('stmt').get('kind')]))
                var.put('bodyFlags', (var.get('S_TFFF') if (var.get('flags')&var.get('F_ALLOW_IN')) else var.get('S_FFFF')))
                pass
                if (var.get('stmt').get('declarations').get('length')>Js(1.0)):
                    var.get('withIndent')(var.get('block'))
                else:
                    var.get('block')()
                var.get('result').callprop('push', var.get(u"this").callprop('semicolon', var.get('flags')))
                return var.get('result')
            PyJs_VariableDeclaration_53_._set_name('VariableDeclaration')
            @Js
            def PyJs_ThrowStatement_54_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ThrowStatement':PyJs_ThrowStatement_54_}, var)
                var.registers(['flags', 'stmt'])
                return Js([var.get('join')(Js('throw'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('argument'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))), var.get(u"this").callprop('semicolon', var.get('flags'))])
            PyJs_ThrowStatement_54_._set_name('ThrowStatement')
            @Js
            def PyJs_TryStatement_55_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'TryStatement':PyJs_TryStatement_55_}, var)
                var.registers(['flags', 'guardedHandlers', 'i', 'iz', 'result', 'stmt'])
                pass
                var.put('result', Js([Js('try'), var.get(u"this").callprop('maybeBlock', var.get('stmt').get('block'), var.get('S_TFFF'))]))
                var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('block'), var.get('result')))
                if var.get('stmt').get('handlers'):
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('handlers').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('stmt').get('handlers').get(var.get('i')), var.get('S_TFFF'))))
                            if (var.get('stmt').get('finalizer') or PyJsStrictNeq((var.get('i')+Js(1.0)),var.get('iz'))):
                                var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('handlers').get(var.get('i')).get('body'), var.get('result')))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                else:
                    var.put('guardedHandlers', (var.get('stmt').get('guardedHandlers') or Js([])))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('guardedHandlers').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('guardedHandlers').get(var.get('i')), var.get('S_TFFF'))))
                            if (var.get('stmt').get('finalizer') or PyJsStrictNeq((var.get('i')+Js(1.0)),var.get('iz'))):
                                var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('guardedHandlers').get(var.get('i')).get('body'), var.get('result')))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                    if var.get('stmt').get('handler'):
                        if var.get('Array').callprop('isArray', var.get('stmt').get('handler')):
                            #for JS loop
                            PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('handler').get('length')))
                            while (var.get('i')<var.get('iz')):
                                try:
                                    var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('stmt').get('handler').get(var.get('i')), var.get('S_TFFF'))))
                                    if (var.get('stmt').get('finalizer') or PyJsStrictNeq((var.get('i')+Js(1.0)),var.get('iz'))):
                                        var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('handler').get(var.get('i')).get('body'), var.get('result')))
                                finally:
                                        var.put('i',Js(var.get('i').to_number())+Js(1))
                        else:
                            var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateStatement', var.get('stmt').get('handler'), var.get('S_TFFF'))))
                            if var.get('stmt').get('finalizer'):
                                var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('handler').get('body'), var.get('result')))
                if var.get('stmt').get('finalizer'):
                    var.put('result', var.get('join')(var.get('result'), Js([Js('finally'), var.get(u"this").callprop('maybeBlock', var.get('stmt').get('finalizer'), var.get('S_TFFF'))])))
                return var.get('result')
            PyJs_TryStatement_55_._set_name('TryStatement')
            @Js
            def PyJs_SwitchStatement_56_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'SwitchStatement':PyJs_SwitchStatement_56_}, var)
                var.registers(['flags', 'i', 'fragment', 'iz', 'bodyFlags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_57_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([((Js('switch')+var.get('space'))+Js('(')), var.get('that').callprop('generateExpression', var.get('stmt').get('discriminant'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), (((Js(')')+var.get('space'))+Js('{'))+var.get('newline'))]))
                PyJs_anonymous_57_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_57_)
                if var.get('stmt').get('cases'):
                    var.put('bodyFlags', var.get('S_TFFF'))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('stmt').get('cases').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            if PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0))):
                                var.put('bodyFlags', var.get('F_SEMICOLON_OPT'), '|')
                            var.put('fragment', var.get('addIndent')(var.get(u"this").callprop('generateStatement', var.get('stmt').get('cases').get(var.get('i')), var.get('bodyFlags'))))
                            var.get('result').callprop('push', var.get('fragment'))
                            if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg():
                                var.get('result').callprop('push', var.get('newline'))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                var.get('result').callprop('push', var.get('addIndent')(Js('}')))
                return var.get('result')
            PyJs_SwitchStatement_56_._set_name('SwitchStatement')
            @Js
            def PyJs_SwitchCase_58_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'SwitchCase':PyJs_SwitchCase_58_}, var)
                var.registers(['flags', 'i', 'fragment', 'iz', 'bodyFlags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_59_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    if var.get('stmt').get('test'):
                        var.put('result', Js([var.get('join')(Js('case'), var.get('that').callprop('generateExpression', var.get('stmt').get('test'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))), Js(':')]))
                    else:
                        var.put('result', Js([Js('default:')]))
                    var.put('i', Js(0.0))
                    var.put('iz', var.get('stmt').get('consequent').get('length'))
                    if (var.get('iz') and PyJsStrictEq(var.get('stmt').get('consequent').get('0').get('type'),var.get('Syntax').get('BlockStatement'))):
                        var.put('fragment', var.get('that').callprop('maybeBlock', var.get('stmt').get('consequent').get('0'), var.get('S_TFFF')))
                        var.get('result').callprop('push', var.get('fragment'))
                        var.put('i', Js(1.0))
                    if (PyJsStrictNeq(var.get('i'),var.get('iz')) and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg()):
                        var.get('result').callprop('push', var.get('newline'))
                    var.put('bodyFlags', var.get('S_TFFF'))
                    #for JS loop
                    
                    while (var.get('i')<var.get('iz')):
                        try:
                            if (PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0))) and (var.get('flags')&var.get('F_SEMICOLON_OPT'))):
                                var.put('bodyFlags', var.get('F_SEMICOLON_OPT'), '|')
                            var.put('fragment', var.get('addIndent')(var.get('that').callprop('generateStatement', var.get('stmt').get('consequent').get(var.get('i')), var.get('bodyFlags'))))
                            var.get('result').callprop('push', var.get('fragment'))
                            if (PyJsStrictNeq((var.get('i')+Js(1.0)),var.get('iz')) and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg()):
                                var.get('result').callprop('push', var.get('newline'))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_59_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_59_)
                return var.get('result')
            PyJs_SwitchCase_58_._set_name('SwitchCase')
            @Js
            def PyJs_IfStatement_60_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'IfStatement':PyJs_IfStatement_60_}, var)
                var.registers(['flags', 'semicolonOptional', 'bodyFlags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_61_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([((Js('if')+var.get('space'))+Js('(')), var.get('that').callprop('generateExpression', var.get('stmt').get('test'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), Js(')')]))
                PyJs_anonymous_61_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_61_)
                var.put('semicolonOptional', (var.get('flags')&var.get('F_SEMICOLON_OPT')))
                var.put('bodyFlags', var.get('S_TFFF'))
                if var.get('semicolonOptional'):
                    var.put('bodyFlags', var.get('F_SEMICOLON_OPT'), '|')
                if var.get('stmt').get('alternate'):
                    var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('consequent'), var.get('S_TFFF')))
                    var.put('result', var.get(u"this").callprop('maybeBlockSuffix', var.get('stmt').get('consequent'), var.get('result')))
                    if PyJsStrictEq(var.get('stmt').get('alternate').get('type'),var.get('Syntax').get('IfStatement')):
                        var.put('result', var.get('join')(var.get('result'), Js([Js('else '), var.get(u"this").callprop('generateStatement', var.get('stmt').get('alternate'), var.get('bodyFlags'))])))
                    else:
                        var.put('result', var.get('join')(var.get('result'), var.get('join')(Js('else'), var.get(u"this").callprop('maybeBlock', var.get('stmt').get('alternate'), var.get('bodyFlags')))))
                else:
                    var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('consequent'), var.get('bodyFlags')))
                return var.get('result')
            PyJs_IfStatement_60_._set_name('IfStatement')
            @Js
            def PyJs_ForStatement_62_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ForStatement':PyJs_ForStatement_62_}, var)
                var.registers(['flags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_63_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([((Js('for')+var.get('space'))+Js('('))]))
                    if var.get('stmt').get('init'):
                        if PyJsStrictEq(var.get('stmt').get('init').get('type'),var.get('Syntax').get('VariableDeclaration')):
                            var.get('result').callprop('push', var.get('that').callprop('generateStatement', var.get('stmt').get('init'), var.get('S_FFFF')))
                        else:
                            var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('init'), var.get('Precedence').get('Sequence'), var.get('E_FTT')))
                            var.get('result').callprop('push', Js(';'))
                    else:
                        var.get('result').callprop('push', Js(';'))
                    if var.get('stmt').get('test'):
                        var.get('result').callprop('push', var.get('space'))
                        var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('test'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                        var.get('result').callprop('push', Js(';'))
                    else:
                        var.get('result').callprop('push', Js(';'))
                    if var.get('stmt').get('update'):
                        var.get('result').callprop('push', var.get('space'))
                        var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('stmt').get('update'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                        var.get('result').callprop('push', Js(')'))
                    else:
                        var.get('result').callprop('push', Js(')'))
                PyJs_anonymous_63_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_63_)
                var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF'))))
                return var.get('result')
            PyJs_ForStatement_62_._set_name('ForStatement')
            @Js
            def PyJs_ForInStatement_64_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ForInStatement':PyJs_ForInStatement_64_}, var)
                var.registers(['flags', 'stmt'])
                return var.get(u"this").callprop('generateIterationForStatement', Js('in'), var.get('stmt'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF')))
            PyJs_ForInStatement_64_._set_name('ForInStatement')
            @Js
            def PyJs_ForOfStatement_65_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ForOfStatement':PyJs_ForOfStatement_65_}, var)
                var.registers(['flags', 'stmt'])
                return var.get(u"this").callprop('generateIterationForStatement', Js('of'), var.get('stmt'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF')))
            PyJs_ForOfStatement_65_._set_name('ForOfStatement')
            @Js
            def PyJs_LabeledStatement_66_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'LabeledStatement':PyJs_LabeledStatement_66_}, var)
                var.registers(['flags', 'stmt'])
                return Js([(var.get('stmt').get('label').get('name')+Js(':')), var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF')))])
            PyJs_LabeledStatement_66_._set_name('LabeledStatement')
            @Js
            def PyJs_Program_67_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'Program':PyJs_Program_67_}, var)
                var.registers(['flags', 'i', 'fragment', 'iz', 'bodyFlags', 'result', 'stmt'])
                pass
                var.put('iz', var.get('stmt').get('body').get('length'))
                var.put('result', Js([(Js('\n') if (var.get('safeConcatenation') and (var.get('iz')>Js(0.0))) else Js(''))]))
                var.put('bodyFlags', var.get('S_TFTF'))
                #for JS loop
                var.put('i', Js(0.0))
                while (var.get('i')<var.get('iz')):
                    try:
                        if (var.get('safeConcatenation').neg() and PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0)))):
                            var.put('bodyFlags', var.get('F_SEMICOLON_OPT'), '|')
                        if var.get('preserveBlankLines'):
                            if PyJsStrictEq(var.get('i'),Js(0.0)):
                                if var.get('stmt').get('body').get('0').get('leadingComments').neg():
                                    var.get('generateBlankLines')(var.get('stmt').get('range').get('0'), var.get('stmt').get('body').get(var.get('i')).get('range').get('0'), var.get('result'))
                            if (var.get('i')>Js(0.0)):
                                if (var.get('stmt').get('body').get((var.get('i')-Js(1.0))).get('trailingComments').neg() and var.get('stmt').get('body').get(var.get('i')).get('leadingComments').neg()):
                                    var.get('generateBlankLines')(var.get('stmt').get('body').get((var.get('i')-Js(1.0))).get('range').get('1'), var.get('stmt').get('body').get(var.get('i')).get('range').get('0'), var.get('result'))
                        var.put('fragment', var.get('addIndent')(var.get(u"this").callprop('generateStatement', var.get('stmt').get('body').get(var.get('i')), var.get('bodyFlags'))))
                        var.get('result').callprop('push', var.get('fragment'))
                        if (((var.get('i')+Js(1.0))<var.get('iz')) and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg()):
                            if var.get('preserveBlankLines'):
                                if var.get('stmt').get('body').get((var.get('i')+Js(1.0))).get('leadingComments').neg():
                                    var.get('result').callprop('push', var.get('newline'))
                            else:
                                var.get('result').callprop('push', var.get('newline'))
                        if var.get('preserveBlankLines'):
                            if PyJsStrictEq(var.get('i'),(var.get('iz')-Js(1.0))):
                                if var.get('stmt').get('body').get(var.get('i')).get('trailingComments').neg():
                                    var.get('generateBlankLines')(var.get('stmt').get('body').get(var.get('i')).get('range').get('1'), var.get('stmt').get('range').get('1'), var.get('result'))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                return var.get('result')
            PyJs_Program_67_._set_name('Program')
            @Js
            def PyJs_FunctionDeclaration_68_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'FunctionDeclaration':PyJs_FunctionDeclaration_68_}, var)
                var.registers(['flags', 'stmt'])
                return Js([var.get('generateAsyncPrefix')(var.get('stmt'), Js(True)), Js('function'), (var.get('generateStarSuffix')(var.get('stmt')) or var.get('noEmptySpace')()), (var.get('generateIdentifier')(var.get('stmt').get('id')) if var.get('stmt').get('id') else Js('')), var.get(u"this").callprop('generateFunctionBody', var.get('stmt'))])
            PyJs_FunctionDeclaration_68_._set_name('FunctionDeclaration')
            @Js
            def PyJs_ReturnStatement_69_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'ReturnStatement':PyJs_ReturnStatement_69_}, var)
                var.registers(['flags', 'stmt'])
                if var.get('stmt').get('argument'):
                    return Js([var.get('join')(Js('return'), var.get(u"this").callprop('generateExpression', var.get('stmt').get('argument'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))), var.get(u"this").callprop('semicolon', var.get('flags'))])
                return Js([(Js('return')+var.get(u"this").callprop('semicolon', var.get('flags')))])
            PyJs_ReturnStatement_69_._set_name('ReturnStatement')
            @Js
            def PyJs_WhileStatement_70_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'WhileStatement':PyJs_WhileStatement_70_}, var)
                var.registers(['flags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_71_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([((Js('while')+var.get('space'))+Js('(')), var.get('that').callprop('generateExpression', var.get('stmt').get('test'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), Js(')')]))
                PyJs_anonymous_71_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_71_)
                var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF'))))
                return var.get('result')
            PyJs_WhileStatement_70_._set_name('WhileStatement')
            @Js
            def PyJs_WithStatement_72_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments, 'WithStatement':PyJs_WithStatement_72_}, var)
                var.registers(['flags', 'that', 'result', 'stmt'])
                var.put('that', var.get(u"this"))
                @Js
                def PyJs_anonymous_73_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('result', Js([((Js('with')+var.get('space'))+Js('(')), var.get('that').callprop('generateExpression', var.get('stmt').get('object'), var.get('Precedence').get('Sequence'), var.get('E_TTT')), Js(')')]))
                PyJs_anonymous_73_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_73_)
                var.get('result').callprop('push', var.get(u"this").callprop('maybeBlock', var.get('stmt').get('body'), (var.get('S_TFFT') if (var.get('flags')&var.get('F_SEMICOLON_OPT')) else var.get('S_TFFF'))))
                return var.get('result')
            PyJs_WithStatement_72_._set_name('WithStatement')
            PyJs_Object_30_ = Js({'BlockStatement':PyJs_BlockStatement_31_,'BreakStatement':PyJs_BreakStatement_33_,'ContinueStatement':PyJs_ContinueStatement_34_,'ClassBody':PyJs_ClassBody_35_,'ClassDeclaration':PyJs_ClassDeclaration_37_,'DirectiveStatement':PyJs_DirectiveStatement_38_,'DoWhileStatement':PyJs_DoWhileStatement_39_,'CatchClause':PyJs_CatchClause_40_,'DebuggerStatement':PyJs_DebuggerStatement_42_,'EmptyStatement':PyJs_EmptyStatement_43_,'ExportDefaultDeclaration':PyJs_ExportDefaultDeclaration_44_,'ExportNamedDeclaration':PyJs_ExportNamedDeclaration_45_,'ExportAllDeclaration':PyJs_ExportAllDeclaration_47_,'ExpressionStatement':PyJs_ExpressionStatement_48_,'ImportDeclaration':PyJs_ImportDeclaration_50_,'VariableDeclarator':PyJs_VariableDeclarator_52_,'VariableDeclaration':PyJs_VariableDeclaration_53_,'ThrowStatement':PyJs_ThrowStatement_54_,'TryStatement':PyJs_TryStatement_55_,'SwitchStatement':PyJs_SwitchStatement_56_,'SwitchCase':PyJs_SwitchCase_58_,'IfStatement':PyJs_IfStatement_60_,'ForStatement':PyJs_ForStatement_62_,'ForInStatement':PyJs_ForInStatement_64_,'ForOfStatement':PyJs_ForOfStatement_65_,'LabeledStatement':PyJs_LabeledStatement_66_,'Program':PyJs_Program_67_,'FunctionDeclaration':PyJs_FunctionDeclaration_68_,'ReturnStatement':PyJs_ReturnStatement_69_,'WhileStatement':PyJs_WhileStatement_70_,'WithStatement':PyJs_WithStatement_72_})
            var.get('CodeGenerator').put('Statement', PyJs_Object_30_)
            var.get('merge')(var.get('CodeGenerator').get('prototype'), var.get('CodeGenerator').get('Statement'))
            @Js
            def PyJs_SequenceExpression_75_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'SequenceExpression':PyJs_SequenceExpression_75_}, var)
                var.registers(['precedence', 'flags', 'i', 'iz', 'result', 'expr'])
                pass
                if (var.get('Precedence').get('Sequence')<var.get('precedence')):
                    var.put('flags', var.get('F_ALLOW_IN'), '|')
                var.put('result', Js([]))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('expressions').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('expressions').get(var.get('i')), var.get('Precedence').get('Assignment'), var.get('flags')))
                        if ((var.get('i')+Js(1.0))<var.get('iz')):
                            var.get('result').callprop('push', (Js(',')+var.get('space')))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Sequence'), var.get('precedence'))
            PyJs_SequenceExpression_75_._set_name('SequenceExpression')
            @Js
            def PyJs_AssignmentExpression_76_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'AssignmentExpression':PyJs_AssignmentExpression_76_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('generateAssignment', var.get('expr').get('left'), var.get('expr').get('right'), var.get('expr').get('operator'), var.get('precedence'), var.get('flags'))
            PyJs_AssignmentExpression_76_._set_name('AssignmentExpression')
            @Js
            def PyJs_ArrowFunctionExpression_77_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ArrowFunctionExpression':PyJs_ArrowFunctionExpression_77_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get('parenthesize')(var.get(u"this").callprop('generateFunctionBody', var.get('expr')), var.get('Precedence').get('ArrowFunction'), var.get('precedence'))
            PyJs_ArrowFunctionExpression_77_._set_name('ArrowFunctionExpression')
            @Js
            def PyJs_ConditionalExpression_78_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ConditionalExpression':PyJs_ConditionalExpression_78_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                if (var.get('Precedence').get('Conditional')<var.get('precedence')):
                    var.put('flags', var.get('F_ALLOW_IN'), '|')
                def PyJs_LONG_79_(var=var):
                    return var.get('parenthesize')(Js([var.get(u"this").callprop('generateExpression', var.get('expr').get('test'), var.get('Precedence').get('LogicalOR'), var.get('flags')), ((var.get('space')+Js('?'))+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('expr').get('consequent'), var.get('Precedence').get('Assignment'), var.get('flags')), ((var.get('space')+Js(':'))+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('expr').get('alternate'), var.get('Precedence').get('Assignment'), var.get('flags'))]), var.get('Precedence').get('Conditional'), var.get('precedence'))
                return PyJs_LONG_79_()
            PyJs_ConditionalExpression_78_._set_name('ConditionalExpression')
            @Js
            def PyJs_LogicalExpression_80_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'LogicalExpression':PyJs_LogicalExpression_80_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('BinaryExpression', var.get('expr'), var.get('precedence'), var.get('flags'))
            PyJs_LogicalExpression_80_._set_name('LogicalExpression')
            @Js
            def PyJs_BinaryExpression_81_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'BinaryExpression':PyJs_BinaryExpression_81_}, var)
                var.registers(['leftSource', 'precedence', 'flags', 'fragment', 'currentPrecedence', 'result', 'expr'])
                pass
                var.put('currentPrecedence', var.get('BinaryPrecedence').get(var.get('expr').get('operator')))
                if (var.get('currentPrecedence')<var.get('precedence')):
                    var.put('flags', var.get('F_ALLOW_IN'), '|')
                var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('left'), var.get('currentPrecedence'), var.get('flags')))
                var.put('leftSource', var.get('fragment').callprop('toString'))
                if (PyJsStrictEq(var.get('leftSource').callprop('charCodeAt', (var.get('leftSource').get('length')-Js(1.0))),Js(47)) and var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('expr').get('operator').callprop('charCodeAt', Js(0.0)))):
                    var.put('result', Js([var.get('fragment'), var.get('noEmptySpace')(), var.get('expr').get('operator')]))
                else:
                    var.put('result', var.get('join')(var.get('fragment'), var.get('expr').get('operator')))
                var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('right'), (var.get('currentPrecedence')+Js(1.0)), var.get('flags')))
                if ((PyJsStrictEq(var.get('expr').get('operator'),Js('/')) and PyJsStrictEq(var.get('fragment').callprop('toString').callprop('charAt', Js(0.0)),Js('/'))) or (PyJsStrictEq(var.get('expr').get('operator').callprop('slice', (-Js(1.0))),Js('<')) and PyJsStrictEq(var.get('fragment').callprop('toString').callprop('slice', Js(0.0), Js(3.0)),Js('!--')))):
                    var.get('result').callprop('push', var.get('noEmptySpace')())
                    var.get('result').callprop('push', var.get('fragment'))
                else:
                    var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                if (PyJsStrictEq(var.get('expr').get('operator'),Js('in')) and (var.get('flags')&var.get('F_ALLOW_IN')).neg()):
                    return Js([Js('('), var.get('result'), Js(')')])
                return var.get('parenthesize')(var.get('result'), var.get('currentPrecedence'), var.get('precedence'))
            PyJs_BinaryExpression_81_._set_name('BinaryExpression')
            @Js
            def PyJs_CallExpression_82_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'CallExpression':PyJs_CallExpression_82_}, var)
                var.registers(['precedence', 'flags', 'i', 'iz', 'result', 'expr'])
                pass
                var.put('result', Js([var.get(u"this").callprop('generateExpression', var.get('expr').get('callee'), var.get('Precedence').get('Call'), var.get('E_TTF'))]))
                var.get('result').callprop('push', Js('('))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('arguments').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('arguments').get(var.get('i')), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                        if ((var.get('i')+Js(1.0))<var.get('iz')):
                            var.get('result').callprop('push', (Js(',')+var.get('space')))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                var.get('result').callprop('push', Js(')'))
                if (var.get('flags')&var.get('F_ALLOW_CALL')).neg():
                    return Js([Js('('), var.get('result'), Js(')')])
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Call'), var.get('precedence'))
            PyJs_CallExpression_82_._set_name('CallExpression')
            @Js
            def PyJs_NewExpression_83_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'NewExpression':PyJs_NewExpression_83_}, var)
                var.registers(['itemFlags', 'precedence', 'length', 'flags', 'i', 'iz', 'result', 'expr'])
                pass
                var.put('length', var.get('expr').get('arguments').get('length'))
                var.put('itemFlags', (var.get('E_TFT') if (((var.get('flags')&var.get('F_ALLOW_UNPARATH_NEW')) and var.get('parentheses').neg()) and PyJsStrictEq(var.get('length'),Js(0.0))) else var.get('E_TFF')))
                var.put('result', var.get('join')(Js('new'), var.get(u"this").callprop('generateExpression', var.get('expr').get('callee'), var.get('Precedence').get('New'), var.get('itemFlags'))))
                if (((var.get('flags')&var.get('F_ALLOW_UNPARATH_NEW')).neg() or var.get('parentheses')) or (var.get('length')>Js(0.0))):
                    var.get('result').callprop('push', Js('('))
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('arguments').get(var.get('i')), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                            if ((var.get('i')+Js(1.0))<var.get('iz')):
                                var.get('result').callprop('push', (Js(',')+var.get('space')))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                    var.get('result').callprop('push', Js(')'))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('New'), var.get('precedence'))
            PyJs_NewExpression_83_._set_name('NewExpression')
            @Js
            def PyJs_MemberExpression_84_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'MemberExpression':PyJs_MemberExpression_84_}, var)
                var.registers(['flags', 'precedence', 'fragment', 'result', 'expr'])
                pass
                var.put('result', Js([var.get(u"this").callprop('generateExpression', var.get('expr').get('object'), var.get('Precedence').get('Call'), (var.get('E_TTF') if (var.get('flags')&var.get('F_ALLOW_CALL')) else var.get('E_TFF')))]))
                if var.get('expr').get('computed'):
                    var.get('result').callprop('push', Js('['))
                    var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('property'), var.get('Precedence').get('Sequence'), (var.get('E_TTT') if (var.get('flags')&var.get('F_ALLOW_CALL')) else var.get('E_TFT'))))
                    var.get('result').callprop('push', Js(']'))
                else:
                    if (PyJsStrictEq(var.get('expr').get('object').get('type'),var.get('Syntax').get('Literal')) and PyJsStrictEq(var.get('expr').get('object').get('value').typeof(),Js('number'))):
                        var.put('fragment', var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString'))
                        def PyJs_LONG_85_(var=var):
                            return ((((var.get('fragment').callprop('indexOf', Js('.'))<Js(0.0)) and JsRegExp('/[eExX]/').callprop('test', var.get('fragment')).neg()) and var.get('esutils').get('code').callprop('isDecimalDigit', var.get('fragment').callprop('charCodeAt', (var.get('fragment').get('length')-Js(1.0))))) and ((var.get('fragment').get('length')>=Js(2.0)) and PyJsStrictEq(var.get('fragment').callprop('charCodeAt', Js(0.0)),Js(48.0))).neg())
                        if PyJs_LONG_85_():
                            var.get('result').callprop('push', Js(' '))
                    var.get('result').callprop('push', Js('.'))
                    var.get('result').callprop('push', var.get('generateIdentifier')(var.get('expr').get('property')))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Member'), var.get('precedence'))
            PyJs_MemberExpression_84_._set_name('MemberExpression')
            @Js
            def PyJs_MetaProperty_86_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'MetaProperty':PyJs_MetaProperty_86_}, var)
                var.registers(['flags', 'result', 'expr', 'precedence'])
                pass
                var.put('result', Js([]))
                var.get('result').callprop('push', (var.get('expr').get('meta') if PyJsStrictEq(var.get('expr').get('meta').typeof(),Js('string')) else var.get('generateIdentifier')(var.get('expr').get('meta'))))
                var.get('result').callprop('push', Js('.'))
                var.get('result').callprop('push', (var.get('expr').get('property') if PyJsStrictEq(var.get('expr').get('property').typeof(),Js('string')) else var.get('generateIdentifier')(var.get('expr').get('property'))))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Member'), var.get('precedence'))
            PyJs_MetaProperty_86_._set_name('MetaProperty')
            @Js
            def PyJs_UnaryExpression_87_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'UnaryExpression':PyJs_UnaryExpression_87_}, var)
                var.registers(['leftSource', 'precedence', 'flags', 'rightCharCode', 'fragment', 'leftCharCode', 'result', 'expr'])
                pass
                var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Unary'), var.get('E_TTT')))
                if PyJsStrictEq(var.get('space'),Js('')):
                    var.put('result', var.get('join')(var.get('expr').get('operator'), var.get('fragment')))
                else:
                    var.put('result', Js([var.get('expr').get('operator')]))
                    if (var.get('expr').get('operator').get('length')>Js(2.0)):
                        var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                    else:
                        var.put('leftSource', var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString'))
                        var.put('leftCharCode', var.get('leftSource').callprop('charCodeAt', (var.get('leftSource').get('length')-Js(1.0))))
                        var.put('rightCharCode', var.get('fragment').callprop('toString').callprop('charCodeAt', Js(0.0)))
                        if (((PyJsStrictEq(var.get('leftCharCode'),Js(43)) or PyJsStrictEq(var.get('leftCharCode'),Js(45))) and PyJsStrictEq(var.get('leftCharCode'),var.get('rightCharCode'))) or (var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('leftCharCode')) and var.get('esutils').get('code').callprop('isIdentifierPartES5', var.get('rightCharCode')))):
                            var.get('result').callprop('push', var.get('noEmptySpace')())
                            var.get('result').callprop('push', var.get('fragment'))
                        else:
                            var.get('result').callprop('push', var.get('fragment'))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Unary'), var.get('precedence'))
            PyJs_UnaryExpression_87_._set_name('UnaryExpression')
            @Js
            def PyJs_YieldExpression_88_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'YieldExpression':PyJs_YieldExpression_88_}, var)
                var.registers(['flags', 'result', 'expr', 'precedence'])
                pass
                if var.get('expr').get('delegate'):
                    var.put('result', Js('yield*'))
                else:
                    var.put('result', Js('yield'))
                if var.get('expr').get('argument'):
                    var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Yield'), var.get('E_TTT'))))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Yield'), var.get('precedence'))
            PyJs_YieldExpression_88_._set_name('YieldExpression')
            @Js
            def PyJs_AwaitExpression_89_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'AwaitExpression':PyJs_AwaitExpression_89_}, var)
                var.registers(['flags', 'result', 'expr', 'precedence'])
                var.put('result', var.get('join')((Js('await*') if var.get('expr').get('all') else Js('await')), var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Await'), var.get('E_TTT'))))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('Await'), var.get('precedence'))
            PyJs_AwaitExpression_89_._set_name('AwaitExpression')
            @Js
            def PyJs_UpdateExpression_90_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'UpdateExpression':PyJs_UpdateExpression_90_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                if var.get('expr').get('prefix'):
                    return var.get('parenthesize')(Js([var.get('expr').get('operator'), var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Unary'), var.get('E_TTT'))]), var.get('Precedence').get('Unary'), var.get('precedence'))
                return var.get('parenthesize')(Js([var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Postfix'), var.get('E_TTT')), var.get('expr').get('operator')]), var.get('Precedence').get('Postfix'), var.get('precedence'))
            PyJs_UpdateExpression_90_._set_name('UpdateExpression')
            @Js
            def PyJs_FunctionExpression_91_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'FunctionExpression':PyJs_FunctionExpression_91_}, var)
                var.registers(['flags', 'result', 'expr', 'precedence'])
                var.put('result', Js([var.get('generateAsyncPrefix')(var.get('expr'), Js(True)), Js('function')]))
                if var.get('expr').get('id'):
                    var.get('result').callprop('push', (var.get('generateStarSuffix')(var.get('expr')) or var.get('noEmptySpace')()))
                    var.get('result').callprop('push', var.get('generateIdentifier')(var.get('expr').get('id')))
                else:
                    var.get('result').callprop('push', (var.get('generateStarSuffix')(var.get('expr')) or var.get('space')))
                var.get('result').callprop('push', var.get(u"this").callprop('generateFunctionBody', var.get('expr')))
                return var.get('result')
            PyJs_FunctionExpression_91_._set_name('FunctionExpression')
            @Js
            def PyJs_ArrayPattern_92_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ArrayPattern':PyJs_ArrayPattern_92_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('ArrayExpression', var.get('expr'), var.get('precedence'), var.get('flags'), Js(True))
            PyJs_ArrayPattern_92_._set_name('ArrayPattern')
            @Js
            def PyJs_ArrayExpression_93_(expr, precedence, flags, isPattern, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'isPattern':isPattern, 'this':this, 'arguments':arguments, 'ArrayExpression':PyJs_ArrayExpression_93_}, var)
                var.registers(['precedence', 'flags', 'multiline', 'isPattern', 'that', 'result', 'expr'])
                var.put('that', var.get(u"this"))
                if var.get('expr').get('elements').get('length').neg():
                    return Js('[]')
                var.put('multiline', (Js(False) if var.get('isPattern') else (var.get('expr').get('elements').get('length')>Js(1.0))))
                var.put('result', Js([Js('['), (var.get('newline') if var.get('multiline') else Js(''))]))
                @Js
                def PyJs_anonymous_94_(indent, this, arguments, var=var):
                    var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'i', 'indent'])
                    pass
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('elements').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            if var.get('expr').get('elements').get(var.get('i')).neg():
                                if var.get('multiline'):
                                    var.get('result').callprop('push', var.get('indent'))
                                if PyJsStrictEq((var.get('i')+Js(1.0)),var.get('iz')):
                                    var.get('result').callprop('push', Js(','))
                            else:
                                var.get('result').callprop('push', (var.get('indent') if var.get('multiline') else Js('')))
                                var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('expr').get('elements').get(var.get('i')), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                            if ((var.get('i')+Js(1.0))<var.get('iz')):
                                var.get('result').callprop('push', (Js(',')+(var.get('newline') if var.get('multiline') else var.get('space'))))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_94_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_94_)
                if (var.get('multiline') and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg()):
                    var.get('result').callprop('push', var.get('newline'))
                var.get('result').callprop('push', (var.get('base') if var.get('multiline') else Js('')))
                var.get('result').callprop('push', Js(']'))
                return var.get('result')
            PyJs_ArrayExpression_93_._set_name('ArrayExpression')
            @Js
            def PyJs_RestElement_95_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'RestElement':PyJs_RestElement_95_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return (Js('...')+var.get(u"this").callprop('generatePattern', var.get('expr').get('argument')))
            PyJs_RestElement_95_._set_name('RestElement')
            @Js
            def PyJs_ClassExpression_96_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ClassExpression':PyJs_ClassExpression_96_}, var)
                var.registers(['flags', 'precedence', 'fragment', 'result', 'expr'])
                pass
                var.put('result', Js([Js('class')]))
                if var.get('expr').get('id'):
                    var.put('result', var.get('join')(var.get('result'), var.get(u"this").callprop('generateExpression', var.get('expr').get('id'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))))
                if var.get('expr').get('superClass'):
                    var.put('fragment', var.get('join')(Js('extends'), var.get(u"this").callprop('generateExpression', var.get('expr').get('superClass'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))))
                    var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                var.get('result').callprop('push', var.get('space'))
                var.get('result').callprop('push', var.get(u"this").callprop('generateStatement', var.get('expr').get('body'), var.get('S_TFFT')))
                return var.get('result')
            PyJs_ClassExpression_96_._set_name('ClassExpression')
            @Js
            def PyJs_MethodDefinition_97_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'MethodDefinition':PyJs_MethodDefinition_97_}, var)
                var.registers(['flags', 'precedence', 'fragment', 'result', 'expr'])
                pass
                if var.get('expr').get('static'):
                    var.put('result', Js([(Js('static')+var.get('space'))]))
                else:
                    var.put('result', Js([]))
                if (PyJsStrictEq(var.get('expr').get('kind'),Js('get')) or PyJsStrictEq(var.get('expr').get('kind'),Js('set'))):
                    var.put('fragment', Js([var.get('join')(var.get('expr').get('kind'), var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed'))), var.get(u"this").callprop('generateFunctionBody', var.get('expr').get('value'))]))
                else:
                    var.put('fragment', Js([var.get('generateMethodPrefix')(var.get('expr')), var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed')), var.get(u"this").callprop('generateFunctionBody', var.get('expr').get('value'))]))
                return var.get('join')(var.get('result'), var.get('fragment'))
            PyJs_MethodDefinition_97_._set_name('MethodDefinition')
            @Js
            def PyJs_Property_98_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'Property':PyJs_Property_98_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                if (PyJsStrictEq(var.get('expr').get('kind'),Js('get')) or PyJsStrictEq(var.get('expr').get('kind'),Js('set'))):
                    return Js([var.get('expr').get('kind'), var.get('noEmptySpace')(), var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed')), var.get(u"this").callprop('generateFunctionBody', var.get('expr').get('value'))])
                if var.get('expr').get('shorthand'):
                    if PyJsStrictEq(var.get('expr').get('value').get('type'),Js('AssignmentPattern')):
                        return var.get(u"this").callprop('AssignmentPattern', var.get('expr').get('value'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))
                    return var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed'))
                if var.get('expr').get('method'):
                    return Js([var.get('generateMethodPrefix')(var.get('expr')), var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed')), var.get(u"this").callprop('generateFunctionBody', var.get('expr').get('value'))])
                return Js([var.get(u"this").callprop('generatePropertyKey', var.get('expr').get('key'), var.get('expr').get('computed')), (Js(':')+var.get('space')), var.get(u"this").callprop('generateExpression', var.get('expr').get('value'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))])
            PyJs_Property_98_._set_name('Property')
            @Js
            def PyJs_ObjectExpression_99_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ObjectExpression':PyJs_ObjectExpression_99_}, var)
                var.registers(['precedence', 'flags', 'multiline', 'fragment', 'that', 'result', 'expr'])
                var.put('that', var.get(u"this"))
                if var.get('expr').get('properties').get('length').neg():
                    return Js('{}')
                var.put('multiline', (var.get('expr').get('properties').get('length')>Js(1.0)))
                @Js
                def PyJs_anonymous_100_(this, arguments, var=var):
                    var = Scope({'this':this, 'arguments':arguments}, var)
                    var.registers([])
                    var.put('fragment', var.get('that').callprop('generateExpression', var.get('expr').get('properties').get('0'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                PyJs_anonymous_100_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_100_)
                if var.get('multiline').neg():
                    if var.get('hasLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('fragment')).callprop('toString')).neg():
                        return Js([Js('{'), var.get('space'), var.get('fragment'), var.get('space'), Js('}')])
                @Js
                def PyJs_anonymous_101_(indent, this, arguments, var=var):
                    var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'i', 'indent'])
                    pass
                    var.put('result', Js([Js('{'), var.get('newline'), var.get('indent'), var.get('fragment')]))
                    if var.get('multiline'):
                        var.get('result').callprop('push', (Js(',')+var.get('newline')))
                        #for JS loop
                        PyJsComma(var.put('i', Js(1.0)),var.put('iz', var.get('expr').get('properties').get('length')))
                        while (var.get('i')<var.get('iz')):
                            try:
                                var.get('result').callprop('push', var.get('indent'))
                                var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('expr').get('properties').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                                if ((var.get('i')+Js(1.0))<var.get('iz')):
                                    var.get('result').callprop('push', (Js(',')+var.get('newline')))
                            finally:
                                    var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_101_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_101_)
                if var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg():
                    var.get('result').callprop('push', var.get('newline'))
                var.get('result').callprop('push', var.get('base'))
                var.get('result').callprop('push', Js('}'))
                return var.get('result')
            PyJs_ObjectExpression_99_._set_name('ObjectExpression')
            @Js
            def PyJs_AssignmentPattern_102_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'AssignmentPattern':PyJs_AssignmentPattern_102_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('generateAssignment', var.get('expr').get('left'), var.get('expr').get('right'), Js('='), var.get('precedence'), var.get('flags'))
            PyJs_AssignmentPattern_102_._set_name('AssignmentPattern')
            @Js
            def PyJs_ObjectPattern_103_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ObjectPattern':PyJs_ObjectPattern_103_}, var)
                var.registers(['precedence', 'flags', 'multiline', 'i', 'iz', 'property', 'that', 'result', 'expr'])
                var.put('that', var.get(u"this"))
                if var.get('expr').get('properties').get('length').neg():
                    return Js('{}')
                var.put('multiline', Js(False))
                if PyJsStrictEq(var.get('expr').get('properties').get('length'),Js(1.0)):
                    var.put('property', var.get('expr').get('properties').get('0'))
                    if PyJsStrictNeq(var.get('property').get('value').get('type'),var.get('Syntax').get('Identifier')):
                        var.put('multiline', Js(True))
                else:
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('properties').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.put('property', var.get('expr').get('properties').get(var.get('i')))
                            if var.get('property').get('shorthand').neg():
                                var.put('multiline', Js(True))
                                break
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                var.put('result', Js([Js('{'), (var.get('newline') if var.get('multiline') else Js(''))]))
                @Js
                def PyJs_anonymous_104_(indent, this, arguments, var=var):
                    var = Scope({'indent':indent, 'this':this, 'arguments':arguments}, var)
                    var.registers(['iz', 'i', 'indent'])
                    pass
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('properties').get('length')))
                    while (var.get('i')<var.get('iz')):
                        try:
                            var.get('result').callprop('push', (var.get('indent') if var.get('multiline') else Js('')))
                            var.get('result').callprop('push', var.get('that').callprop('generateExpression', var.get('expr').get('properties').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                            if ((var.get('i')+Js(1.0))<var.get('iz')):
                                var.get('result').callprop('push', (Js(',')+(var.get('newline') if var.get('multiline') else var.get('space'))))
                        finally:
                                var.put('i',Js(var.get('i').to_number())+Js(1))
                PyJs_anonymous_104_._set_name('anonymous')
                var.get('withIndent')(PyJs_anonymous_104_)
                if (var.get('multiline') and var.get('endsWithLineTerminator')(var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString')).neg()):
                    var.get('result').callprop('push', var.get('newline'))
                var.get('result').callprop('push', (var.get('base') if var.get('multiline') else Js('')))
                var.get('result').callprop('push', Js('}'))
                return var.get('result')
            PyJs_ObjectPattern_103_._set_name('ObjectPattern')
            @Js
            def PyJs_ThisExpression_105_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ThisExpression':PyJs_ThisExpression_105_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return Js('this')
            PyJs_ThisExpression_105_._set_name('ThisExpression')
            @Js
            def PyJs_Super_106_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'Super':PyJs_Super_106_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return Js('super')
            PyJs_Super_106_._set_name('Super')
            @Js
            def PyJs_Identifier_107_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'Identifier':PyJs_Identifier_107_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get('generateIdentifier')(var.get('expr'))
            PyJs_Identifier_107_._set_name('Identifier')
            @Js
            def PyJs_ImportDefaultSpecifier_108_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ImportDefaultSpecifier':PyJs_ImportDefaultSpecifier_108_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get('generateIdentifier')((var.get('expr').get('id') or var.get('expr').get('local')))
            PyJs_ImportDefaultSpecifier_108_._set_name('ImportDefaultSpecifier')
            @Js
            def PyJs_ImportNamespaceSpecifier_109_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ImportNamespaceSpecifier':PyJs_ImportNamespaceSpecifier_109_}, var)
                var.registers(['flags', 'precedence', 'id', 'result', 'expr'])
                var.put('result', Js([Js('*')]))
                var.put('id', (var.get('expr').get('id') or var.get('expr').get('local')))
                if var.get('id'):
                    var.get('result').callprop('push', (((var.get('space')+Js('as'))+var.get('noEmptySpace')())+var.get('generateIdentifier')(var.get('id'))))
                return var.get('result')
            PyJs_ImportNamespaceSpecifier_109_._set_name('ImportNamespaceSpecifier')
            @Js
            def PyJs_ImportSpecifier_110_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ImportSpecifier':PyJs_ImportSpecifier_110_}, var)
                var.registers(['precedence', 'flags', 'imported', 'result', 'expr', 'local'])
                var.put('imported', var.get('expr').get('imported'))
                var.put('result', Js([var.get('imported').get('name')]))
                var.put('local', var.get('expr').get('local'))
                if (var.get('local') and PyJsStrictNeq(var.get('local').get('name'),var.get('imported').get('name'))):
                    var.get('result').callprop('push', (((var.get('noEmptySpace')()+Js('as'))+var.get('noEmptySpace')())+var.get('generateIdentifier')(var.get('local'))))
                return var.get('result')
            PyJs_ImportSpecifier_110_._set_name('ImportSpecifier')
            @Js
            def PyJs_ExportSpecifier_111_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ExportSpecifier':PyJs_ExportSpecifier_111_}, var)
                var.registers(['precedence', 'flags', 'exported', 'result', 'expr', 'local'])
                var.put('local', var.get('expr').get('local'))
                var.put('result', Js([var.get('local').get('name')]))
                var.put('exported', var.get('expr').get('exported'))
                if (var.get('exported') and PyJsStrictNeq(var.get('exported').get('name'),var.get('local').get('name'))):
                    var.get('result').callprop('push', (((var.get('noEmptySpace')()+Js('as'))+var.get('noEmptySpace')())+var.get('generateIdentifier')(var.get('exported'))))
                return var.get('result')
            PyJs_ExportSpecifier_111_._set_name('ExportSpecifier')
            @Js
            def PyJs_Literal_112_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'Literal':PyJs_Literal_112_}, var)
                var.registers(['flags', 'precedence', 'raw', 'expr'])
                pass
                if ((var.get('expr').callprop('hasOwnProperty', Js('raw')) and var.get('parse')) and var.get('extra').get('raw')):
                    try:
                        var.put('raw', var.get('parse')(var.get('expr').get('raw')).get('body').get('0').get('expression'))
                        if PyJsStrictEq(var.get('raw').get('type'),var.get('Syntax').get('Literal')):
                            if PyJsStrictEq(var.get('raw').get('value'),var.get('expr').get('value')):
                                return var.get('expr').get('raw')
                    except PyJsException as PyJsTempException:
                        PyJsHolder_65_29535363 = var.own.get('e')
                        var.force_own_put('e', PyExceptionToJs(PyJsTempException))
                        try:
                            pass
                        finally:
                            if PyJsHolder_65_29535363 is not None:
                                var.own['e'] = PyJsHolder_65_29535363
                            else:
                                del var.own['e']
                            del PyJsHolder_65_29535363
                if PyJsStrictEq(var.get('expr').get('value'),var.get(u"null")):
                    return Js('null')
                if PyJsStrictEq(var.get('expr').get('value').typeof(),Js('string')):
                    return var.get('escapeString')(var.get('expr').get('value'))
                if PyJsStrictEq(var.get('expr').get('value').typeof(),Js('number')):
                    return var.get('generateNumber')(var.get('expr').get('value'))
                if PyJsStrictEq(var.get('expr').get('value').typeof(),Js('boolean')):
                    return (Js('true') if var.get('expr').get('value') else Js('false'))
                if var.get('expr').get('regex'):
                    return (((Js('/')+var.get('expr').get('regex').get('pattern'))+Js('/'))+var.get('expr').get('regex').get('flags'))
                return var.get('generateRegExp')(var.get('expr').get('value'))
            PyJs_Literal_112_._set_name('Literal')
            @Js
            def PyJs_GeneratorExpression_113_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'GeneratorExpression':PyJs_GeneratorExpression_113_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('ComprehensionExpression', var.get('expr'), var.get('precedence'), var.get('flags'))
            PyJs_GeneratorExpression_113_._set_name('GeneratorExpression')
            @Js
            def PyJs_ComprehensionExpression_114_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ComprehensionExpression':PyJs_ComprehensionExpression_114_}, var)
                var.registers(['precedence', 'flags', 'i', 'fragment', 'iz', 'that', 'result', 'expr'])
                var.put('that', var.get(u"this"))
                var.put('result', (Js([Js('(')]) if PyJsStrictEq(var.get('expr').get('type'),var.get('Syntax').get('GeneratorExpression')) else Js([Js('[')])))
                if var.get('extra').get('moz').get('comprehensionExpressionStartsWithAssignment'):
                    var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('body'), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                    var.get('result').callprop('push', var.get('fragment'))
                if var.get('expr').get('blocks'):
                    @Js
                    def PyJs_anonymous_115_(this, arguments, var=var):
                        var = Scope({'this':this, 'arguments':arguments}, var)
                        var.registers([])
                        #for JS loop
                        PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('blocks').get('length')))
                        while (var.get('i')<var.get('iz')):
                            try:
                                var.put('fragment', var.get('that').callprop('generateExpression', var.get('expr').get('blocks').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                                if ((var.get('i')>Js(0.0)) or var.get('extra').get('moz').get('comprehensionExpressionStartsWithAssignment')):
                                    var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                                else:
                                    var.get('result').callprop('push', var.get('fragment'))
                            finally:
                                    var.put('i',Js(var.get('i').to_number())+Js(1))
                    PyJs_anonymous_115_._set_name('anonymous')
                    var.get('withIndent')(PyJs_anonymous_115_)
                if var.get('expr').get('filter'):
                    var.put('result', var.get('join')(var.get('result'), (Js('if')+var.get('space'))))
                    var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('filter'), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                    var.put('result', var.get('join')(var.get('result'), Js([Js('('), var.get('fragment'), Js(')')])))
                if var.get('extra').get('moz').get('comprehensionExpressionStartsWithAssignment').neg():
                    var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('body'), var.get('Precedence').get('Assignment'), var.get('E_TTT')))
                    var.put('result', var.get('join')(var.get('result'), var.get('fragment')))
                var.get('result').callprop('push', (Js(')') if PyJsStrictEq(var.get('expr').get('type'),var.get('Syntax').get('GeneratorExpression')) else Js(']')))
                return var.get('result')
            PyJs_ComprehensionExpression_114_._set_name('ComprehensionExpression')
            @Js
            def PyJs_ComprehensionBlock_116_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ComprehensionBlock':PyJs_ComprehensionBlock_116_}, var)
                var.registers(['flags', 'expr', 'fragment', 'precedence'])
                pass
                if PyJsStrictEq(var.get('expr').get('left').get('type'),var.get('Syntax').get('VariableDeclaration')):
                    var.put('fragment', Js([var.get('expr').get('left').get('kind'), var.get('noEmptySpace')(), var.get(u"this").callprop('generateStatement', var.get('expr').get('left').get('declarations').get('0'), var.get('S_FFFF'))]))
                else:
                    var.put('fragment', var.get(u"this").callprop('generateExpression', var.get('expr').get('left'), var.get('Precedence').get('Call'), var.get('E_TTT')))
                var.put('fragment', var.get('join')(var.get('fragment'), (Js('of') if var.get('expr').get('of') else Js('in'))))
                var.put('fragment', var.get('join')(var.get('fragment'), var.get(u"this").callprop('generateExpression', var.get('expr').get('right'), var.get('Precedence').get('Sequence'), var.get('E_TTT'))))
                return Js([((Js('for')+var.get('space'))+Js('(')), var.get('fragment'), Js(')')])
            PyJs_ComprehensionBlock_116_._set_name('ComprehensionBlock')
            @Js
            def PyJs_SpreadElement_117_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'SpreadElement':PyJs_SpreadElement_117_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return Js([Js('...'), var.get(u"this").callprop('generateExpression', var.get('expr').get('argument'), var.get('Precedence').get('Assignment'), var.get('E_TTT'))])
            PyJs_SpreadElement_117_._set_name('SpreadElement')
            @Js
            def PyJs_TaggedTemplateExpression_118_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'TaggedTemplateExpression':PyJs_TaggedTemplateExpression_118_}, var)
                var.registers(['itemFlags', 'flags', 'precedence', 'result', 'expr'])
                var.put('itemFlags', var.get('E_TTF'))
                if (var.get('flags')&var.get('F_ALLOW_CALL')).neg():
                    var.put('itemFlags', var.get('E_TFF'))
                var.put('result', Js([var.get(u"this").callprop('generateExpression', var.get('expr').get('tag'), var.get('Precedence').get('Call'), var.get('itemFlags')), var.get(u"this").callprop('generateExpression', var.get('expr').get('quasi'), var.get('Precedence').get('Primary'), var.get('E_FFT'))]))
                return var.get('parenthesize')(var.get('result'), var.get('Precedence').get('TaggedTemplate'), var.get('precedence'))
            PyJs_TaggedTemplateExpression_118_._set_name('TaggedTemplateExpression')
            @Js
            def PyJs_TemplateElement_119_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'TemplateElement':PyJs_TemplateElement_119_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get('expr').get('value').get('raw')
            PyJs_TemplateElement_119_._set_name('TemplateElement')
            @Js
            def PyJs_TemplateLiteral_120_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'TemplateLiteral':PyJs_TemplateLiteral_120_}, var)
                var.registers(['precedence', 'flags', 'i', 'iz', 'result', 'expr'])
                pass
                var.put('result', Js([Js('`')]))
                #for JS loop
                PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('expr').get('quasis').get('length')))
                while (var.get('i')<var.get('iz')):
                    try:
                        var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('quasis').get(var.get('i')), var.get('Precedence').get('Primary'), var.get('E_TTT')))
                        if ((var.get('i')+Js(1.0))<var.get('iz')):
                            var.get('result').callprop('push', (Js('${')+var.get('space')))
                            var.get('result').callprop('push', var.get(u"this").callprop('generateExpression', var.get('expr').get('expressions').get(var.get('i')), var.get('Precedence').get('Sequence'), var.get('E_TTT')))
                            var.get('result').callprop('push', (var.get('space')+Js('}')))
                    finally:
                            var.put('i',Js(var.get('i').to_number())+Js(1))
                var.get('result').callprop('push', Js('`'))
                return var.get('result')
            PyJs_TemplateLiteral_120_._set_name('TemplateLiteral')
            @Js
            def PyJs_ModuleSpecifier_121_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments, 'ModuleSpecifier':PyJs_ModuleSpecifier_121_}, var)
                var.registers(['flags', 'precedence', 'expr'])
                return var.get(u"this").callprop('Literal', var.get('expr'), var.get('precedence'), var.get('flags'))
            PyJs_ModuleSpecifier_121_._set_name('ModuleSpecifier')
            PyJs_Object_74_ = Js({'SequenceExpression':PyJs_SequenceExpression_75_,'AssignmentExpression':PyJs_AssignmentExpression_76_,'ArrowFunctionExpression':PyJs_ArrowFunctionExpression_77_,'ConditionalExpression':PyJs_ConditionalExpression_78_,'LogicalExpression':PyJs_LogicalExpression_80_,'BinaryExpression':PyJs_BinaryExpression_81_,'CallExpression':PyJs_CallExpression_82_,'NewExpression':PyJs_NewExpression_83_,'MemberExpression':PyJs_MemberExpression_84_,'MetaProperty':PyJs_MetaProperty_86_,'UnaryExpression':PyJs_UnaryExpression_87_,'YieldExpression':PyJs_YieldExpression_88_,'AwaitExpression':PyJs_AwaitExpression_89_,'UpdateExpression':PyJs_UpdateExpression_90_,'FunctionExpression':PyJs_FunctionExpression_91_,'ArrayPattern':PyJs_ArrayPattern_92_,'ArrayExpression':PyJs_ArrayExpression_93_,'RestElement':PyJs_RestElement_95_,'ClassExpression':PyJs_ClassExpression_96_,'MethodDefinition':PyJs_MethodDefinition_97_,'Property':PyJs_Property_98_,'ObjectExpression':PyJs_ObjectExpression_99_,'AssignmentPattern':PyJs_AssignmentPattern_102_,'ObjectPattern':PyJs_ObjectPattern_103_,'ThisExpression':PyJs_ThisExpression_105_,'Super':PyJs_Super_106_,'Identifier':PyJs_Identifier_107_,'ImportDefaultSpecifier':PyJs_ImportDefaultSpecifier_108_,'ImportNamespaceSpecifier':PyJs_ImportNamespaceSpecifier_109_,'ImportSpecifier':PyJs_ImportSpecifier_110_,'ExportSpecifier':PyJs_ExportSpecifier_111_,'Literal':PyJs_Literal_112_,'GeneratorExpression':PyJs_GeneratorExpression_113_,'ComprehensionExpression':PyJs_ComprehensionExpression_114_,'ComprehensionBlock':PyJs_ComprehensionBlock_116_,'SpreadElement':PyJs_SpreadElement_117_,'TaggedTemplateExpression':PyJs_TaggedTemplateExpression_118_,'TemplateElement':PyJs_TemplateElement_119_,'TemplateLiteral':PyJs_TemplateLiteral_120_,'ModuleSpecifier':PyJs_ModuleSpecifier_121_})
            var.get('CodeGenerator').put('Expression', PyJs_Object_74_)
            var.get('merge')(var.get('CodeGenerator').get('prototype'), var.get('CodeGenerator').get('Expression'))
            @Js
            def PyJs_anonymous_122_(expr, precedence, flags, this, arguments, var=var):
                var = Scope({'expr':expr, 'precedence':precedence, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'precedence', 'result', 'type', 'expr'])
                pass
                var.put('type', (var.get('expr').get('type') or var.get('Syntax').get('Property')))
                if (var.get('extra').get('verbatim') and var.get('expr').callprop('hasOwnProperty', var.get('extra').get('verbatim'))):
                    return var.get('generateVerbatim')(var.get('expr'), var.get('precedence'))
                var.put('result', var.get(u"this").callprop(var.get('type'), var.get('expr'), var.get('precedence'), var.get('flags')))
                if var.get('extra').get('comment'):
                    var.put('result', var.get('addComments')(var.get('expr'), var.get('result')))
                return var.get('toSourceNodeWhenNeeded')(var.get('result'), var.get('expr'))
            PyJs_anonymous_122_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateExpression', PyJs_anonymous_122_)
            @Js
            def PyJs_anonymous_123_(stmt, flags, this, arguments, var=var):
                var = Scope({'stmt':stmt, 'flags':flags, 'this':this, 'arguments':arguments}, var)
                var.registers(['flags', 'result', 'fragment', 'stmt'])
                pass
                var.put('result', var.get(u"this").callprop(var.get('stmt').get('type'), var.get('stmt'), var.get('flags')))
                if var.get('extra').get('comment'):
                    var.put('result', var.get('addComments')(var.get('stmt'), var.get('result')))
                var.put('fragment', var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('toString'))
                if (((PyJsStrictEq(var.get('stmt').get('type'),var.get('Syntax').get('Program')) and var.get('safeConcatenation').neg()) and PyJsStrictEq(var.get('newline'),Js(''))) and PyJsStrictEq(var.get('fragment').callprop('charAt', (var.get('fragment').get('length')-Js(1.0))),Js('\n'))):
                    var.put('result', (var.get('toSourceNodeWhenNeeded')(var.get('result')).callprop('replaceRight', JsRegExp('/\\s+$/'), Js('')) if var.get('sourceMap') else var.get('fragment').callprop('replace', JsRegExp('/\\s+$/'), Js(''))))
                return var.get('toSourceNodeWhenNeeded')(var.get('result'), var.get('stmt'))
            PyJs_anonymous_123_._set_name('anonymous')
            var.get('CodeGenerator').get('prototype').put('generateStatement', PyJs_anonymous_123_)
            pass
            pass
            PyJs_Object_127_ = Js({'style':Js(''),'base':Js(0.0)})
            PyJs_Object_126_ = Js({'indent':PyJs_Object_127_,'renumber':Js(True),'hexadecimal':Js(True),'quotes':Js('auto'),'escapeless':Js(True),'compact':Js(True),'parentheses':Js(False),'semicolons':Js(False)})
            var.put('FORMAT_MINIFY', PyJs_Object_126_)
            var.put('FORMAT_DEFAULTS', var.get('getDefaultOptions')().get('format'))
            var.get('exports').put('version', var.get('require')(Js('./package.json')).get('version'))
            var.get('exports').put('generate', var.get('generate'))
            var.get('exports').put('attachComments', var.get('estraverse').get('attachComments'))
            PyJs_Object_128_ = Js({})
            var.get('exports').put('Precedence', var.get('updateDeeply')(PyJs_Object_128_, var.get('Precedence')))
            var.get('exports').put('browser', Js(False))
            var.get('exports').put('FORMAT_MINIFY', var.get('FORMAT_MINIFY'))
            var.get('exports').put('FORMAT_DEFAULTS', var.get('FORMAT_DEFAULTS'))
        PyJs_anonymous_6_._set_name('anonymous')
        PyJs_anonymous_6_()
    PyJs_anonymous_5_._set_name('anonymous')
    PyJs_anonymous_5_.callprop('call', var.get(u"this"), (var.get('global') if PyJsStrictNeq(var.get('global',throw=False).typeof(),Js('undefined')) else (var.get('self') if PyJsStrictNeq(var.get('self',throw=False).typeof(),Js('undefined')) else (var.get('window') if PyJsStrictNeq(var.get('window',throw=False).typeof(),Js('undefined')) else PyJs_Object_4_))))
PyJs_anonymous_3_._set_name('anonymous')
PyJs_Object_129_ = Js({'./package.json':Js(13.0),'estraverse':Js(14.0),'esutils':Js(19.0),'source-map':Js(12.0)})
@Js
def PyJs_anonymous_130_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['module', 'require', 'ArraySet', 'has', 'hasNativeMap', 'exports', 'util'])
    @Js
    def PyJsHoisted_ArraySet_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers([])
        var.get(u"this").put('_array', Js([]))
        var.get(u"this").put('_set', (var.get('Map').create() if var.get('hasNativeMap') else var.get('Object').callprop('create', var.get(u"null"))))
    PyJsHoisted_ArraySet_.func_name = 'ArraySet'
    var.put('ArraySet', PyJsHoisted_ArraySet_)
    var.put('util', var.get('require')(Js('./util')))
    var.put('has', var.get('Object').get('prototype').get('hasOwnProperty'))
    var.put('hasNativeMap', PyJsStrictNeq(var.get('Map',throw=False).typeof(),Js('undefined')))
    pass
    @Js
    def PyJs_ArraySet_fromArray_131_(aArray, aAllowDuplicates, this, arguments, var=var):
        var = Scope({'aArray':aArray, 'aAllowDuplicates':aAllowDuplicates, 'this':this, 'arguments':arguments, 'ArraySet_fromArray':PyJs_ArraySet_fromArray_131_}, var)
        var.registers(['aArray', 'set', 'i', 'len', 'aAllowDuplicates'])
        var.put('set', var.get('ArraySet').create())
        #for JS loop
        var.put('i', Js(0.0))
        var.put('len', var.get('aArray').get('length'))
        while (var.get('i')<var.get('len')):
            try:
                var.get('set').callprop('add', var.get('aArray').get(var.get('i')), var.get('aAllowDuplicates'))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('set')
    PyJs_ArraySet_fromArray_131_._set_name('ArraySet_fromArray')
    var.get('ArraySet').put('fromArray', PyJs_ArraySet_fromArray_131_)
    @Js
    def PyJs_ArraySet_size_132_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'ArraySet_size':PyJs_ArraySet_size_132_}, var)
        var.registers([])
        return (var.get(u"this").get('_set').get('size') if var.get('hasNativeMap') else var.get('Object').callprop('getOwnPropertyNames', var.get(u"this").get('_set')).get('length'))
    PyJs_ArraySet_size_132_._set_name('ArraySet_size')
    var.get('ArraySet').get('prototype').put('size', PyJs_ArraySet_size_132_)
    @Js
    def PyJs_ArraySet_add_133_(aStr, aAllowDuplicates, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'aAllowDuplicates':aAllowDuplicates, 'this':this, 'arguments':arguments, 'ArraySet_add':PyJs_ArraySet_add_133_}, var)
        var.registers(['aStr', 'sStr', 'idx', 'aAllowDuplicates', 'isDuplicate'])
        var.put('sStr', (var.get('aStr') if var.get('hasNativeMap') else var.get('util').callprop('toSetString', var.get('aStr'))))
        var.put('isDuplicate', (var.get(u"this").callprop('has', var.get('aStr')) if var.get('hasNativeMap') else var.get('has').callprop('call', var.get(u"this").get('_set'), var.get('sStr'))))
        var.put('idx', var.get(u"this").get('_array').get('length'))
        if (var.get('isDuplicate').neg() or var.get('aAllowDuplicates')):
            var.get(u"this").get('_array').callprop('push', var.get('aStr'))
        if var.get('isDuplicate').neg():
            if var.get('hasNativeMap'):
                var.get(u"this").get('_set').callprop('set', var.get('aStr'), var.get('idx'))
            else:
                var.get(u"this").get('_set').put(var.get('sStr'), var.get('idx'))
    PyJs_ArraySet_add_133_._set_name('ArraySet_add')
    var.get('ArraySet').get('prototype').put('add', PyJs_ArraySet_add_133_)
    @Js
    def PyJs_ArraySet_has_134_(aStr, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'this':this, 'arguments':arguments, 'ArraySet_has':PyJs_ArraySet_has_134_}, var)
        var.registers(['sStr', 'aStr'])
        if var.get('hasNativeMap'):
            return var.get(u"this").get('_set').callprop('has', var.get('aStr'))
        else:
            var.put('sStr', var.get('util').callprop('toSetString', var.get('aStr')))
            return var.get('has').callprop('call', var.get(u"this").get('_set'), var.get('sStr'))
    PyJs_ArraySet_has_134_._set_name('ArraySet_has')
    var.get('ArraySet').get('prototype').put('has', PyJs_ArraySet_has_134_)
    @Js
    def PyJs_ArraySet_indexOf_135_(aStr, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'this':this, 'arguments':arguments, 'ArraySet_indexOf':PyJs_ArraySet_indexOf_135_}, var)
        var.registers(['sStr', 'aStr', 'idx'])
        if var.get('hasNativeMap'):
            var.put('idx', var.get(u"this").get('_set').callprop('get', var.get('aStr')))
            if (var.get('idx')>=Js(0.0)):
                return var.get('idx')
        else:
            var.put('sStr', var.get('util').callprop('toSetString', var.get('aStr')))
            if var.get('has').callprop('call', var.get(u"this").get('_set'), var.get('sStr')):
                return var.get(u"this").get('_set').get(var.get('sStr'))
        PyJsTempException = JsToPyException(var.get('Error').create(((Js('"')+var.get('aStr'))+Js('" is not in the set.'))))
        raise PyJsTempException
    PyJs_ArraySet_indexOf_135_._set_name('ArraySet_indexOf')
    var.get('ArraySet').get('prototype').put('indexOf', PyJs_ArraySet_indexOf_135_)
    @Js
    def PyJs_ArraySet_at_136_(aIdx, this, arguments, var=var):
        var = Scope({'aIdx':aIdx, 'this':this, 'arguments':arguments, 'ArraySet_at':PyJs_ArraySet_at_136_}, var)
        var.registers(['aIdx'])
        if ((var.get('aIdx')>=Js(0.0)) and (var.get('aIdx')<var.get(u"this").get('_array').get('length'))):
            return var.get(u"this").get('_array').get(var.get('aIdx'))
        PyJsTempException = JsToPyException(var.get('Error').create((Js('No element indexed by ')+var.get('aIdx'))))
        raise PyJsTempException
    PyJs_ArraySet_at_136_._set_name('ArraySet_at')
    var.get('ArraySet').get('prototype').put('at', PyJs_ArraySet_at_136_)
    @Js
    def PyJs_ArraySet_toArray_137_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'ArraySet_toArray':PyJs_ArraySet_toArray_137_}, var)
        var.registers([])
        return var.get(u"this").get('_array').callprop('slice')
    PyJs_ArraySet_toArray_137_._set_name('ArraySet_toArray')
    var.get('ArraySet').get('prototype').put('toArray', PyJs_ArraySet_toArray_137_)
    var.get('exports').put('ArraySet', var.get('ArraySet'))
PyJs_anonymous_130_._set_name('anonymous')
PyJs_Object_138_ = Js({'./util':Js(11.0)})
@Js
def PyJs_anonymous_139_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['fromVLQSigned', 'VLQ_BASE_MASK', 'module', 'base64', 'require', 'VLQ_BASE', 'toVLQSigned', 'exports', 'VLQ_BASE_SHIFT', 'VLQ_CONTINUATION_BIT'])
    @Js
    def PyJsHoisted_toVLQSigned_(aValue, this, arguments, var=var):
        var = Scope({'aValue':aValue, 'this':this, 'arguments':arguments}, var)
        var.registers(['aValue'])
        return ((((-var.get('aValue'))<<Js(1.0))+Js(1.0)) if (var.get('aValue')<Js(0.0)) else ((var.get('aValue')<<Js(1.0))+Js(0.0)))
    PyJsHoisted_toVLQSigned_.func_name = 'toVLQSigned'
    var.put('toVLQSigned', PyJsHoisted_toVLQSigned_)
    @Js
    def PyJsHoisted_fromVLQSigned_(aValue, this, arguments, var=var):
        var = Scope({'aValue':aValue, 'this':this, 'arguments':arguments}, var)
        var.registers(['isNegative', 'shifted', 'aValue'])
        var.put('isNegative', PyJsStrictEq((var.get('aValue')&Js(1.0)),Js(1.0)))
        var.put('shifted', (var.get('aValue')>>Js(1.0)))
        return ((-var.get('shifted')) if var.get('isNegative') else var.get('shifted'))
    PyJsHoisted_fromVLQSigned_.func_name = 'fromVLQSigned'
    var.put('fromVLQSigned', PyJsHoisted_fromVLQSigned_)
    var.put('base64', var.get('require')(Js('./base64')))
    var.put('VLQ_BASE_SHIFT', Js(5.0))
    var.put('VLQ_BASE', (Js(1.0)<<var.get('VLQ_BASE_SHIFT')))
    var.put('VLQ_BASE_MASK', (var.get('VLQ_BASE')-Js(1.0)))
    var.put('VLQ_CONTINUATION_BIT', var.get('VLQ_BASE'))
    pass
    pass
    @Js
    def PyJs_base64VLQ_encode_140_(aValue, this, arguments, var=var):
        var = Scope({'aValue':aValue, 'this':this, 'arguments':arguments, 'base64VLQ_encode':PyJs_base64VLQ_encode_140_}, var)
        var.registers(['digit', 'encoded', 'aValue', 'vlq'])
        var.put('encoded', Js(''))
        pass
        var.put('vlq', var.get('toVLQSigned')(var.get('aValue')))
        while 1:
            var.put('digit', (var.get('vlq')&var.get('VLQ_BASE_MASK')))
            var.put('vlq', var.get('VLQ_BASE_SHIFT'), '>>>')
            if (var.get('vlq')>Js(0.0)):
                var.put('digit', var.get('VLQ_CONTINUATION_BIT'), '|')
            var.put('encoded', var.get('base64').callprop('encode', var.get('digit')), '+')
            if not (var.get('vlq')>Js(0.0)):
                break
        return var.get('encoded')
    PyJs_base64VLQ_encode_140_._set_name('base64VLQ_encode')
    var.get('exports').put('encode', PyJs_base64VLQ_encode_140_)
    @Js
    def PyJs_base64VLQ_decode_141_(aStr, aIndex, aOutParam, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'aIndex':aIndex, 'aOutParam':aOutParam, 'this':this, 'arguments':arguments, 'base64VLQ_decode':PyJs_base64VLQ_decode_141_}, var)
        var.registers(['aStr', 'shift', 'digit', 'result', 'strLen', 'continuation', 'aIndex', 'aOutParam'])
        var.put('strLen', var.get('aStr').get('length'))
        var.put('result', Js(0.0))
        var.put('shift', Js(0.0))
        pass
        while 1:
            if (var.get('aIndex')>=var.get('strLen')):
                PyJsTempException = JsToPyException(var.get('Error').create(Js('Expected more digits in base 64 VLQ value.')))
                raise PyJsTempException
            var.put('digit', var.get('base64').callprop('decode', var.get('aStr').callprop('charCodeAt', (var.put('aIndex',Js(var.get('aIndex').to_number())+Js(1))-Js(1)))))
            if PyJsStrictEq(var.get('digit'),(-Js(1.0))):
                PyJsTempException = JsToPyException(var.get('Error').create((Js('Invalid base64 digit: ')+var.get('aStr').callprop('charAt', (var.get('aIndex')-Js(1.0))))))
                raise PyJsTempException
            var.put('continuation', (var.get('digit')&var.get('VLQ_CONTINUATION_BIT')).neg().neg())
            var.put('digit', var.get('VLQ_BASE_MASK'), '&')
            var.put('result', (var.get('result')+(var.get('digit')<<var.get('shift'))))
            var.put('shift', var.get('VLQ_BASE_SHIFT'), '+')
            if not var.get('continuation'):
                break
        var.get('aOutParam').put('value', var.get('fromVLQSigned')(var.get('result')))
        var.get('aOutParam').put('rest', var.get('aIndex'))
    PyJs_base64VLQ_decode_141_._set_name('base64VLQ_decode')
    var.get('exports').put('decode', PyJs_base64VLQ_decode_141_)
PyJs_anonymous_139_._set_name('anonymous')
PyJs_Object_142_ = Js({'./base64':Js(4.0)})
@Js
def PyJs_anonymous_143_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['intToCharMap', 'module', 'exports', 'require'])
    var.put('intToCharMap', Js('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/').callprop('split', Js('')))
    @Js
    def PyJs_anonymous_144_(number, this, arguments, var=var):
        var = Scope({'number':number, 'this':this, 'arguments':arguments}, var)
        var.registers(['number'])
        if ((Js(0.0)<=var.get('number')) and (var.get('number')<var.get('intToCharMap').get('length'))):
            return var.get('intToCharMap').get(var.get('number'))
        PyJsTempException = JsToPyException(var.get('TypeError').create((Js('Must be between 0 and 63: ')+var.get('number'))))
        raise PyJsTempException
    PyJs_anonymous_144_._set_name('anonymous')
    var.get('exports').put('encode', PyJs_anonymous_144_)
    @Js
    def PyJs_anonymous_145_(charCode, this, arguments, var=var):
        var = Scope({'charCode':charCode, 'this':this, 'arguments':arguments}, var)
        var.registers(['slash', 'charCode', 'nine', 'littleA', 'bigZ', 'numberOffset', 'zero', 'littleZ', 'littleOffset', 'plus', 'bigA'])
        var.put('bigA', Js(65.0))
        var.put('bigZ', Js(90.0))
        var.put('littleA', Js(97.0))
        var.put('littleZ', Js(122.0))
        var.put('zero', Js(48.0))
        var.put('nine', Js(57.0))
        var.put('plus', Js(43.0))
        var.put('slash', Js(47.0))
        var.put('littleOffset', Js(26.0))
        var.put('numberOffset', Js(52.0))
        if ((var.get('bigA')<=var.get('charCode')) and (var.get('charCode')<=var.get('bigZ'))):
            return (var.get('charCode')-var.get('bigA'))
        if ((var.get('littleA')<=var.get('charCode')) and (var.get('charCode')<=var.get('littleZ'))):
            return ((var.get('charCode')-var.get('littleA'))+var.get('littleOffset'))
        if ((var.get('zero')<=var.get('charCode')) and (var.get('charCode')<=var.get('nine'))):
            return ((var.get('charCode')-var.get('zero'))+var.get('numberOffset'))
        if (var.get('charCode')==var.get('plus')):
            return Js(62.0)
        if (var.get('charCode')==var.get('slash')):
            return Js(63.0)
        return (-Js(1.0))
    PyJs_anonymous_145_._set_name('anonymous')
    var.get('exports').put('decode', PyJs_anonymous_145_)
PyJs_anonymous_143_._set_name('anonymous')
PyJs_Object_146_ = Js({})
@Js
def PyJs_anonymous_147_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'recursiveSearch', 'module', 'require'])
    @Js
    def PyJsHoisted_recursiveSearch_(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias, this, arguments, var=var):
        var = Scope({'aLow':aLow, 'aHigh':aHigh, 'aNeedle':aNeedle, 'aHaystack':aHaystack, 'aCompare':aCompare, 'aBias':aBias, 'this':this, 'arguments':arguments}, var)
        var.registers(['mid', 'aHaystack', 'cmp', 'aNeedle', 'aBias', 'aCompare', 'aLow', 'aHigh'])
        var.put('mid', (var.get('Math').callprop('floor', ((var.get('aHigh')-var.get('aLow'))/Js(2.0)))+var.get('aLow')))
        var.put('cmp', var.get('aCompare')(var.get('aNeedle'), var.get('aHaystack').get(var.get('mid')), Js(True)))
        if PyJsStrictEq(var.get('cmp'),Js(0.0)):
            return var.get('mid')
        else:
            if (var.get('cmp')>Js(0.0)):
                if ((var.get('aHigh')-var.get('mid'))>Js(1.0)):
                    return var.get('recursiveSearch')(var.get('mid'), var.get('aHigh'), var.get('aNeedle'), var.get('aHaystack'), var.get('aCompare'), var.get('aBias'))
                if (var.get('aBias')==var.get('exports').get('LEAST_UPPER_BOUND')):
                    return (var.get('aHigh') if (var.get('aHigh')<var.get('aHaystack').get('length')) else (-Js(1.0)))
                else:
                    return var.get('mid')
            else:
                if ((var.get('mid')-var.get('aLow'))>Js(1.0)):
                    return var.get('recursiveSearch')(var.get('aLow'), var.get('mid'), var.get('aNeedle'), var.get('aHaystack'), var.get('aCompare'), var.get('aBias'))
                if (var.get('aBias')==var.get('exports').get('LEAST_UPPER_BOUND')):
                    return var.get('mid')
                else:
                    return ((-Js(1.0)) if (var.get('aLow')<Js(0.0)) else var.get('aLow'))
    PyJsHoisted_recursiveSearch_.func_name = 'recursiveSearch'
    var.put('recursiveSearch', PyJsHoisted_recursiveSearch_)
    var.get('exports').put('GREATEST_LOWER_BOUND', Js(1.0))
    var.get('exports').put('LEAST_UPPER_BOUND', Js(2.0))
    pass
    @Js
    def PyJs_search_148_(aNeedle, aHaystack, aCompare, aBias, this, arguments, var=var):
        var = Scope({'aNeedle':aNeedle, 'aHaystack':aHaystack, 'aCompare':aCompare, 'aBias':aBias, 'this':this, 'arguments':arguments, 'search':PyJs_search_148_}, var)
        var.registers(['aHaystack', 'aNeedle', 'aBias', 'aCompare', 'index'])
        if PyJsStrictEq(var.get('aHaystack').get('length'),Js(0.0)):
            return (-Js(1.0))
        var.put('index', var.get('recursiveSearch')((-Js(1.0)), var.get('aHaystack').get('length'), var.get('aNeedle'), var.get('aHaystack'), var.get('aCompare'), (var.get('aBias') or var.get('exports').get('GREATEST_LOWER_BOUND'))))
        if (var.get('index')<Js(0.0)):
            return (-Js(1.0))
        while ((var.get('index')-Js(1.0))>=Js(0.0)):
            if PyJsStrictNeq(var.get('aCompare')(var.get('aHaystack').get(var.get('index')), var.get('aHaystack').get((var.get('index')-Js(1.0))), Js(True)),Js(0.0)):
                break
            var.put('index',Js(var.get('index').to_number())-Js(1))
        return var.get('index')
    PyJs_search_148_._set_name('search')
    var.get('exports').put('search', PyJs_search_148_)
PyJs_anonymous_147_._set_name('anonymous')
PyJs_Object_149_ = Js({})
@Js
def PyJs_anonymous_150_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['module', 'MappingList', 'require', 'generatedPositionAfter', 'exports', 'util'])
    @Js
    def PyJsHoisted_generatedPositionAfter_(mappingA, mappingB, this, arguments, var=var):
        var = Scope({'mappingA':mappingA, 'mappingB':mappingB, 'this':this, 'arguments':arguments}, var)
        var.registers(['lineB', 'lineA', 'columnB', 'mappingA', 'columnA', 'mappingB'])
        var.put('lineA', var.get('mappingA').get('generatedLine'))
        var.put('lineB', var.get('mappingB').get('generatedLine'))
        var.put('columnA', var.get('mappingA').get('generatedColumn'))
        var.put('columnB', var.get('mappingB').get('generatedColumn'))
        return (((var.get('lineB')>var.get('lineA')) or ((var.get('lineB')==var.get('lineA')) and (var.get('columnB')>=var.get('columnA')))) or (var.get('util').callprop('compareByGeneratedPositionsInflated', var.get('mappingA'), var.get('mappingB'))<=Js(0.0)))
    PyJsHoisted_generatedPositionAfter_.func_name = 'generatedPositionAfter'
    var.put('generatedPositionAfter', PyJsHoisted_generatedPositionAfter_)
    @Js
    def PyJsHoisted_MappingList_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers([])
        var.get(u"this").put('_array', Js([]))
        var.get(u"this").put('_sorted', Js(True))
        PyJs_Object_151_ = Js({'generatedLine':(-Js(1.0)),'generatedColumn':Js(0.0)})
        var.get(u"this").put('_last', PyJs_Object_151_)
    PyJsHoisted_MappingList_.func_name = 'MappingList'
    var.put('MappingList', PyJsHoisted_MappingList_)
    var.put('util', var.get('require')(Js('./util')))
    pass
    pass
    @Js
    def PyJs_MappingList_forEach_152_(aCallback, aThisArg, this, arguments, var=var):
        var = Scope({'aCallback':aCallback, 'aThisArg':aThisArg, 'this':this, 'arguments':arguments, 'MappingList_forEach':PyJs_MappingList_forEach_152_}, var)
        var.registers(['aThisArg', 'aCallback'])
        var.get(u"this").get('_array').callprop('forEach', var.get('aCallback'), var.get('aThisArg'))
    PyJs_MappingList_forEach_152_._set_name('MappingList_forEach')
    var.get('MappingList').get('prototype').put('unsortedForEach', PyJs_MappingList_forEach_152_)
    @Js
    def PyJs_MappingList_add_153_(aMapping, this, arguments, var=var):
        var = Scope({'aMapping':aMapping, 'this':this, 'arguments':arguments, 'MappingList_add':PyJs_MappingList_add_153_}, var)
        var.registers(['aMapping'])
        if var.get('generatedPositionAfter')(var.get(u"this").get('_last'), var.get('aMapping')):
            var.get(u"this").put('_last', var.get('aMapping'))
            var.get(u"this").get('_array').callprop('push', var.get('aMapping'))
        else:
            var.get(u"this").put('_sorted', Js(False))
            var.get(u"this").get('_array').callprop('push', var.get('aMapping'))
    PyJs_MappingList_add_153_._set_name('MappingList_add')
    var.get('MappingList').get('prototype').put('add', PyJs_MappingList_add_153_)
    @Js
    def PyJs_MappingList_toArray_154_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'MappingList_toArray':PyJs_MappingList_toArray_154_}, var)
        var.registers([])
        if var.get(u"this").get('_sorted').neg():
            var.get(u"this").get('_array').callprop('sort', var.get('util').get('compareByGeneratedPositionsInflated'))
            var.get(u"this").put('_sorted', Js(True))
        return var.get(u"this").get('_array')
    PyJs_MappingList_toArray_154_._set_name('MappingList_toArray')
    var.get('MappingList').get('prototype').put('toArray', PyJs_MappingList_toArray_154_)
    var.get('exports').put('MappingList', var.get('MappingList'))
PyJs_anonymous_150_._set_name('anonymous')
PyJs_Object_155_ = Js({'./util':Js(11.0)})
@Js
def PyJs_anonymous_156_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['module', 'require', 'exports', 'doQuickSort', 'swap', 'randomIntInRange'])
    @Js
    def PyJsHoisted_swap_(ary, x, y, this, arguments, var=var):
        var = Scope({'ary':ary, 'x':x, 'y':y, 'this':this, 'arguments':arguments}, var)
        var.registers(['temp', 'x', 'y', 'ary'])
        var.put('temp', var.get('ary').get(var.get('x')))
        var.get('ary').put(var.get('x'), var.get('ary').get(var.get('y')))
        var.get('ary').put(var.get('y'), var.get('temp'))
    PyJsHoisted_swap_.func_name = 'swap'
    var.put('swap', PyJsHoisted_swap_)
    @Js
    def PyJsHoisted_randomIntInRange_(low, high, this, arguments, var=var):
        var = Scope({'low':low, 'high':high, 'this':this, 'arguments':arguments}, var)
        var.registers(['low', 'high'])
        return var.get('Math').callprop('round', (var.get('low')+(var.get('Math').callprop('random')*(var.get('high')-var.get('low')))))
    PyJsHoisted_randomIntInRange_.func_name = 'randomIntInRange'
    var.put('randomIntInRange', PyJsHoisted_randomIntInRange_)
    @Js
    def PyJsHoisted_doQuickSort_(ary, comparator, p, r, this, arguments, var=var):
        var = Scope({'ary':ary, 'comparator':comparator, 'p':p, 'r':r, 'this':this, 'arguments':arguments}, var)
        var.registers(['ary', 'r', 'i', 'p', 'q', 'comparator', 'pivot', 'pivotIndex', 'j'])
        if (var.get('p')<var.get('r')):
            var.put('pivotIndex', var.get('randomIntInRange')(var.get('p'), var.get('r')))
            var.put('i', (var.get('p')-Js(1.0)))
            var.get('swap')(var.get('ary'), var.get('pivotIndex'), var.get('r'))
            var.put('pivot', var.get('ary').get(var.get('r')))
            #for JS loop
            var.put('j', var.get('p'))
            while (var.get('j')<var.get('r')):
                try:
                    if (var.get('comparator')(var.get('ary').get(var.get('j')), var.get('pivot'))<=Js(0.0)):
                        var.put('i', Js(1.0), '+')
                        var.get('swap')(var.get('ary'), var.get('i'), var.get('j'))
                finally:
                        (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
            var.get('swap')(var.get('ary'), (var.get('i')+Js(1.0)), var.get('j'))
            var.put('q', (var.get('i')+Js(1.0)))
            var.get('doQuickSort')(var.get('ary'), var.get('comparator'), var.get('p'), (var.get('q')-Js(1.0)))
            var.get('doQuickSort')(var.get('ary'), var.get('comparator'), (var.get('q')+Js(1.0)), var.get('r'))
    PyJsHoisted_doQuickSort_.func_name = 'doQuickSort'
    var.put('doQuickSort', PyJsHoisted_doQuickSort_)
    pass
    pass
    pass
    @Js
    def PyJs_anonymous_157_(ary, comparator, this, arguments, var=var):
        var = Scope({'ary':ary, 'comparator':comparator, 'this':this, 'arguments':arguments}, var)
        var.registers(['comparator', 'ary'])
        var.get('doQuickSort')(var.get('ary'), var.get('comparator'), Js(0.0), (var.get('ary').get('length')-Js(1.0)))
    PyJs_anonymous_157_._set_name('anonymous')
    var.get('exports').put('quickSort', PyJs_anonymous_157_)
PyJs_anonymous_156_._set_name('anonymous')
PyJs_Object_158_ = Js({})
@Js
def PyJs_anonymous_159_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['binarySearch', 'module', 'require', 'Mapping', 'quickSort', 'ArraySet', 'exports', 'base64VLQ', 'IndexedSourceMapConsumer', 'BasicSourceMapConsumer', 'SourceMapConsumer', 'util'])
    @Js
    def PyJsHoisted_SourceMapConsumer_(aSourceMap, aSourceMapURL, this, arguments, var=var):
        var = Scope({'aSourceMap':aSourceMap, 'aSourceMapURL':aSourceMapURL, 'this':this, 'arguments':arguments}, var)
        var.registers(['sourceMap', 'aSourceMap', 'aSourceMapURL'])
        var.put('sourceMap', var.get('aSourceMap'))
        if PyJsStrictEq(var.get('aSourceMap',throw=False).typeof(),Js('string')):
            var.put('sourceMap', var.get('util').callprop('parseSourceMapInput', var.get('aSourceMap')))
        return (var.get('IndexedSourceMapConsumer').create(var.get('sourceMap'), var.get('aSourceMapURL')) if (var.get('sourceMap').get('sections')!=var.get(u"null")) else var.get('BasicSourceMapConsumer').create(var.get('sourceMap'), var.get('aSourceMapURL')))
    PyJsHoisted_SourceMapConsumer_.func_name = 'SourceMapConsumer'
    var.put('SourceMapConsumer', PyJsHoisted_SourceMapConsumer_)
    @Js
    def PyJsHoisted_BasicSourceMapConsumer_(aSourceMap, aSourceMapURL, this, arguments, var=var):
        var = Scope({'aSourceMap':aSourceMap, 'aSourceMapURL':aSourceMapURL, 'this':this, 'arguments':arguments}, var)
        var.registers(['names', 'sourceMap', 'file', 'mappings', 'version', 'aSourceMapURL', 'sourceRoot', 'aSourceMap', 'sourcesContent', 'sources'])
        var.put('sourceMap', var.get('aSourceMap'))
        if PyJsStrictEq(var.get('aSourceMap',throw=False).typeof(),Js('string')):
            var.put('sourceMap', var.get('util').callprop('parseSourceMapInput', var.get('aSourceMap')))
        var.put('version', var.get('util').callprop('getArg', var.get('sourceMap'), Js('version')))
        var.put('sources', var.get('util').callprop('getArg', var.get('sourceMap'), Js('sources')))
        var.put('names', var.get('util').callprop('getArg', var.get('sourceMap'), Js('names'), Js([])))
        var.put('sourceRoot', var.get('util').callprop('getArg', var.get('sourceMap'), Js('sourceRoot'), var.get(u"null")))
        var.put('sourcesContent', var.get('util').callprop('getArg', var.get('sourceMap'), Js('sourcesContent'), var.get(u"null")))
        var.put('mappings', var.get('util').callprop('getArg', var.get('sourceMap'), Js('mappings')))
        var.put('file', var.get('util').callprop('getArg', var.get('sourceMap'), Js('file'), var.get(u"null")))
        if (var.get('version')!=var.get(u"this").get('_version')):
            PyJsTempException = JsToPyException(var.get('Error').create((Js('Unsupported version: ')+var.get('version'))))
            raise PyJsTempException
        if var.get('sourceRoot'):
            var.put('sourceRoot', var.get('util').callprop('normalize', var.get('sourceRoot')))
        @Js
        def PyJs_anonymous_174_(source, this, arguments, var=var):
            var = Scope({'source':source, 'this':this, 'arguments':arguments}, var)
            var.registers(['source'])
            return (var.get('util').callprop('relative', var.get('sourceRoot'), var.get('source')) if ((var.get('sourceRoot') and var.get('util').callprop('isAbsolute', var.get('sourceRoot'))) and var.get('util').callprop('isAbsolute', var.get('source'))) else var.get('source'))
        PyJs_anonymous_174_._set_name('anonymous')
        var.put('sources', var.get('sources').callprop('map', var.get('String')).callprop('map', var.get('util').get('normalize')).callprop('map', PyJs_anonymous_174_))
        var.get(u"this").put('_names', var.get('ArraySet').callprop('fromArray', var.get('names').callprop('map', var.get('String')), Js(True)))
        var.get(u"this").put('_sources', var.get('ArraySet').callprop('fromArray', var.get('sources'), Js(True)))
        @Js
        def PyJs_anonymous_175_(s, this, arguments, var=var):
            var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
            var.registers(['s'])
            return var.get('util').callprop('computeSourceURL', var.get('sourceRoot'), var.get('s'), var.get('aSourceMapURL'))
        PyJs_anonymous_175_._set_name('anonymous')
        var.get(u"this").put('_absoluteSources', var.get(u"this").get('_sources').callprop('toArray').callprop('map', PyJs_anonymous_175_))
        var.get(u"this").put('sourceRoot', var.get('sourceRoot'))
        var.get(u"this").put('sourcesContent', var.get('sourcesContent'))
        var.get(u"this").put('_mappings', var.get('mappings'))
        var.get(u"this").put('_sourceMapURL', var.get('aSourceMapURL'))
        var.get(u"this").put('file', var.get('file'))
    PyJsHoisted_BasicSourceMapConsumer_.func_name = 'BasicSourceMapConsumer'
    var.put('BasicSourceMapConsumer', PyJsHoisted_BasicSourceMapConsumer_)
    @Js
    def PyJsHoisted_Mapping_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers([])
        var.get(u"this").put('generatedLine', Js(0.0))
        var.get(u"this").put('generatedColumn', Js(0.0))
        var.get(u"this").put('source', var.get(u"null"))
        var.get(u"this").put('originalLine', var.get(u"null"))
        var.get(u"this").put('originalColumn', var.get(u"null"))
        var.get(u"this").put('name', var.get(u"null"))
    PyJsHoisted_Mapping_.func_name = 'Mapping'
    var.put('Mapping', PyJsHoisted_Mapping_)
    @Js
    def PyJsHoisted_IndexedSourceMapConsumer_(aSourceMap, aSourceMapURL, this, arguments, var=var):
        var = Scope({'aSourceMap':aSourceMap, 'aSourceMapURL':aSourceMapURL, 'this':this, 'arguments':arguments}, var)
        var.registers(['sections', 'sourceMap', 'version', 'aSourceMapURL', 'aSourceMap', 'lastOffset'])
        var.put('sourceMap', var.get('aSourceMap'))
        if PyJsStrictEq(var.get('aSourceMap',throw=False).typeof(),Js('string')):
            var.put('sourceMap', var.get('util').callprop('parseSourceMapInput', var.get('aSourceMap')))
        var.put('version', var.get('util').callprop('getArg', var.get('sourceMap'), Js('version')))
        var.put('sections', var.get('util').callprop('getArg', var.get('sourceMap'), Js('sections')))
        if (var.get('version')!=var.get(u"this").get('_version')):
            PyJsTempException = JsToPyException(var.get('Error').create((Js('Unsupported version: ')+var.get('version'))))
            raise PyJsTempException
        var.get(u"this").put('_sources', var.get('ArraySet').create())
        var.get(u"this").put('_names', var.get('ArraySet').create())
        PyJs_Object_198_ = Js({'line':(-Js(1.0)),'column':Js(0.0)})
        var.put('lastOffset', PyJs_Object_198_)
        @Js
        def PyJs_anonymous_199_(s, this, arguments, var=var):
            var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
            var.registers(['s', 'offsetColumn', 'offsetLine', 'offset'])
            if var.get('s').get('url'):
                PyJsTempException = JsToPyException(var.get('Error').create(Js('Support for url field in sections not implemented.')))
                raise PyJsTempException
            var.put('offset', var.get('util').callprop('getArg', var.get('s'), Js('offset')))
            var.put('offsetLine', var.get('util').callprop('getArg', var.get('offset'), Js('line')))
            var.put('offsetColumn', var.get('util').callprop('getArg', var.get('offset'), Js('column')))
            if ((var.get('offsetLine')<var.get('lastOffset').get('line')) or (PyJsStrictEq(var.get('offsetLine'),var.get('lastOffset').get('line')) and (var.get('offsetColumn')<var.get('lastOffset').get('column')))):
                PyJsTempException = JsToPyException(var.get('Error').create(Js('Section offsets must be ordered and non-overlapping.')))
                raise PyJsTempException
            var.put('lastOffset', var.get('offset'))
            PyJs_Object_201_ = Js({'generatedLine':(var.get('offsetLine')+Js(1.0)),'generatedColumn':(var.get('offsetColumn')+Js(1.0))})
            PyJs_Object_200_ = Js({'generatedOffset':PyJs_Object_201_,'consumer':var.get('SourceMapConsumer').create(var.get('util').callprop('getArg', var.get('s'), Js('map')), var.get('aSourceMapURL'))})
            return PyJs_Object_200_
        PyJs_anonymous_199_._set_name('anonymous')
        var.get(u"this").put('_sections', var.get('sections').callprop('map', PyJs_anonymous_199_))
    PyJsHoisted_IndexedSourceMapConsumer_.func_name = 'IndexedSourceMapConsumer'
    var.put('IndexedSourceMapConsumer', PyJsHoisted_IndexedSourceMapConsumer_)
    var.put('util', var.get('require')(Js('./util')))
    var.put('binarySearch', var.get('require')(Js('./binary-search')))
    var.put('ArraySet', var.get('require')(Js('./array-set')).get('ArraySet'))
    var.put('base64VLQ', var.get('require')(Js('./base64-vlq')))
    var.put('quickSort', var.get('require')(Js('./quick-sort')).get('quickSort'))
    pass
    @Js
    def PyJs_anonymous_160_(aSourceMap, aSourceMapURL, this, arguments, var=var):
        var = Scope({'aSourceMap':aSourceMap, 'aSourceMapURL':aSourceMapURL, 'this':this, 'arguments':arguments}, var)
        var.registers(['aSourceMap', 'aSourceMapURL'])
        return var.get('BasicSourceMapConsumer').callprop('fromSourceMap', var.get('aSourceMap'), var.get('aSourceMapURL'))
    PyJs_anonymous_160_._set_name('anonymous')
    var.get('SourceMapConsumer').put('fromSourceMap', PyJs_anonymous_160_)
    var.get('SourceMapConsumer').get('prototype').put('_version', Js(3.0))
    var.get('SourceMapConsumer').get('prototype').put('__generatedMappings', var.get(u"null"))
    @Js
    def PyJs_get_162_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'get':PyJs_get_162_}, var)
        var.registers([])
        if var.get(u"this").get('__generatedMappings').neg():
            var.get(u"this").callprop('_parseMappings', var.get(u"this").get('_mappings'), var.get(u"this").get('sourceRoot'))
        return var.get(u"this").get('__generatedMappings')
    PyJs_get_162_._set_name('get')
    PyJs_Object_161_ = Js({'configurable':Js(True),'enumerable':Js(True),'get':PyJs_get_162_})
    var.get('Object').callprop('defineProperty', var.get('SourceMapConsumer').get('prototype'), Js('_generatedMappings'), PyJs_Object_161_)
    var.get('SourceMapConsumer').get('prototype').put('__originalMappings', var.get(u"null"))
    @Js
    def PyJs_get_164_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'get':PyJs_get_164_}, var)
        var.registers([])
        if var.get(u"this").get('__originalMappings').neg():
            var.get(u"this").callprop('_parseMappings', var.get(u"this").get('_mappings'), var.get(u"this").get('sourceRoot'))
        return var.get(u"this").get('__originalMappings')
    PyJs_get_164_._set_name('get')
    PyJs_Object_163_ = Js({'configurable':Js(True),'enumerable':Js(True),'get':PyJs_get_164_})
    var.get('Object').callprop('defineProperty', var.get('SourceMapConsumer').get('prototype'), Js('_originalMappings'), PyJs_Object_163_)
    @Js
    def PyJs_SourceMapConsumer_charIsMappingSeparator_165_(aStr, index, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'index':index, 'this':this, 'arguments':arguments, 'SourceMapConsumer_charIsMappingSeparator':PyJs_SourceMapConsumer_charIsMappingSeparator_165_}, var)
        var.registers(['index', 'aStr', 'c'])
        var.put('c', var.get('aStr').callprop('charAt', var.get('index')))
        return (PyJsStrictEq(var.get('c'),Js(';')) or PyJsStrictEq(var.get('c'),Js(',')))
    PyJs_SourceMapConsumer_charIsMappingSeparator_165_._set_name('SourceMapConsumer_charIsMappingSeparator')
    var.get('SourceMapConsumer').get('prototype').put('_charIsMappingSeparator', PyJs_SourceMapConsumer_charIsMappingSeparator_165_)
    @Js
    def PyJs_SourceMapConsumer_parseMappings_166_(aStr, aSourceRoot, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'aSourceRoot':aSourceRoot, 'this':this, 'arguments':arguments, 'SourceMapConsumer_parseMappings':PyJs_SourceMapConsumer_parseMappings_166_}, var)
        var.registers(['aStr', 'aSourceRoot'])
        PyJsTempException = JsToPyException(var.get('Error').create(Js('Subclasses must implement _parseMappings')))
        raise PyJsTempException
    PyJs_SourceMapConsumer_parseMappings_166_._set_name('SourceMapConsumer_parseMappings')
    var.get('SourceMapConsumer').get('prototype').put('_parseMappings', PyJs_SourceMapConsumer_parseMappings_166_)
    var.get('SourceMapConsumer').put('GENERATED_ORDER', Js(1.0))
    var.get('SourceMapConsumer').put('ORIGINAL_ORDER', Js(2.0))
    var.get('SourceMapConsumer').put('GREATEST_LOWER_BOUND', Js(1.0))
    var.get('SourceMapConsumer').put('LEAST_UPPER_BOUND', Js(2.0))
    @Js
    def PyJs_SourceMapConsumer_eachMapping_167_(aCallback, aContext, aOrder, this, arguments, var=var):
        var = Scope({'aCallback':aCallback, 'aContext':aContext, 'aOrder':aOrder, 'this':this, 'arguments':arguments, 'SourceMapConsumer_eachMapping':PyJs_SourceMapConsumer_eachMapping_167_}, var)
        var.registers(['aContext', 'context', 'mappings', 'sourceRoot', 'aCallback', 'order', 'aOrder'])
        var.put('context', (var.get('aContext') or var.get(u"null")))
        var.put('order', (var.get('aOrder') or var.get('SourceMapConsumer').get('GENERATED_ORDER')))
        pass
        while 1:
            SWITCHED = False
            CONDITION = (var.get('order'))
            if SWITCHED or PyJsStrictEq(CONDITION, var.get('SourceMapConsumer').get('GENERATED_ORDER')):
                SWITCHED = True
                var.put('mappings', var.get(u"this").get('_generatedMappings'))
                break
            if SWITCHED or PyJsStrictEq(CONDITION, var.get('SourceMapConsumer').get('ORIGINAL_ORDER')):
                SWITCHED = True
                var.put('mappings', var.get(u"this").get('_originalMappings'))
                break
            if True:
                SWITCHED = True
                PyJsTempException = JsToPyException(var.get('Error').create(Js('Unknown order of iteration.')))
                raise PyJsTempException
            SWITCHED = True
            break
        var.put('sourceRoot', var.get(u"this").get('sourceRoot'))
        @Js
        def PyJs_anonymous_168_(mapping, this, arguments, var=var):
            var = Scope({'mapping':mapping, 'this':this, 'arguments':arguments}, var)
            var.registers(['source', 'mapping'])
            var.put('source', (var.get(u"null") if PyJsStrictEq(var.get('mapping').get('source'),var.get(u"null")) else var.get(u"this").get('_sources').callprop('at', var.get('mapping').get('source'))))
            var.put('source', var.get('util').callprop('computeSourceURL', var.get('sourceRoot'), var.get('source'), var.get(u"this").get('_sourceMapURL')))
            PyJs_Object_169_ = Js({'source':var.get('source'),'generatedLine':var.get('mapping').get('generatedLine'),'generatedColumn':var.get('mapping').get('generatedColumn'),'originalLine':var.get('mapping').get('originalLine'),'originalColumn':var.get('mapping').get('originalColumn'),'name':(var.get(u"null") if PyJsStrictEq(var.get('mapping').get('name'),var.get(u"null")) else var.get(u"this").get('_names').callprop('at', var.get('mapping').get('name')))})
            return PyJs_Object_169_
        PyJs_anonymous_168_._set_name('anonymous')
        var.get('mappings').callprop('map', PyJs_anonymous_168_, var.get(u"this")).callprop('forEach', var.get('aCallback'), var.get('context'))
    PyJs_SourceMapConsumer_eachMapping_167_._set_name('SourceMapConsumer_eachMapping')
    var.get('SourceMapConsumer').get('prototype').put('eachMapping', PyJs_SourceMapConsumer_eachMapping_167_)
    @Js
    def PyJs_SourceMapConsumer_allGeneratedPositionsFor_170_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'SourceMapConsumer_allGeneratedPositionsFor':PyJs_SourceMapConsumer_allGeneratedPositionsFor_170_}, var)
        var.registers(['originalLine', 'needle', 'aArgs', 'mappings', 'originalColumn', 'index', 'line', 'mapping'])
        var.put('line', var.get('util').callprop('getArg', var.get('aArgs'), Js('line')))
        PyJs_Object_171_ = Js({'source':var.get('util').callprop('getArg', var.get('aArgs'), Js('source')),'originalLine':var.get('line'),'originalColumn':var.get('util').callprop('getArg', var.get('aArgs'), Js('column'), Js(0.0))})
        var.put('needle', PyJs_Object_171_)
        var.get('needle').put('source', var.get(u"this").callprop('_findSourceIndex', var.get('needle').get('source')))
        if (var.get('needle').get('source')<Js(0.0)):
            return Js([])
        var.put('mappings', Js([]))
        var.put('index', var.get(u"this").callprop('_findMapping', var.get('needle'), var.get(u"this").get('_originalMappings'), Js('originalLine'), Js('originalColumn'), var.get('util').get('compareByOriginalPositions'), var.get('binarySearch').get('LEAST_UPPER_BOUND')))
        if (var.get('index')>=Js(0.0)):
            var.put('mapping', var.get(u"this").get('_originalMappings').get(var.get('index')))
            if PyJsStrictEq(var.get('aArgs').get('column'),var.get('undefined')):
                var.put('originalLine', var.get('mapping').get('originalLine'))
                while (var.get('mapping') and PyJsStrictEq(var.get('mapping').get('originalLine'),var.get('originalLine'))):
                    PyJs_Object_172_ = Js({'line':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedLine'), var.get(u"null")),'column':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedColumn'), var.get(u"null")),'lastColumn':var.get('util').callprop('getArg', var.get('mapping'), Js('lastGeneratedColumn'), var.get(u"null"))})
                    var.get('mappings').callprop('push', PyJs_Object_172_)
                    var.put('mapping', var.get(u"this").get('_originalMappings').get(var.put('index',Js(var.get('index').to_number())+Js(1))))
            else:
                var.put('originalColumn', var.get('mapping').get('originalColumn'))
                while ((var.get('mapping') and PyJsStrictEq(var.get('mapping').get('originalLine'),var.get('line'))) and (var.get('mapping').get('originalColumn')==var.get('originalColumn'))):
                    PyJs_Object_173_ = Js({'line':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedLine'), var.get(u"null")),'column':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedColumn'), var.get(u"null")),'lastColumn':var.get('util').callprop('getArg', var.get('mapping'), Js('lastGeneratedColumn'), var.get(u"null"))})
                    var.get('mappings').callprop('push', PyJs_Object_173_)
                    var.put('mapping', var.get(u"this").get('_originalMappings').get(var.put('index',Js(var.get('index').to_number())+Js(1))))
        return var.get('mappings')
    PyJs_SourceMapConsumer_allGeneratedPositionsFor_170_._set_name('SourceMapConsumer_allGeneratedPositionsFor')
    var.get('SourceMapConsumer').get('prototype').put('allGeneratedPositionsFor', PyJs_SourceMapConsumer_allGeneratedPositionsFor_170_)
    var.get('exports').put('SourceMapConsumer', var.get('SourceMapConsumer'))
    pass
    var.get('BasicSourceMapConsumer').put('prototype', var.get('Object').callprop('create', var.get('SourceMapConsumer').get('prototype')))
    var.get('BasicSourceMapConsumer').get('prototype').put('consumer', var.get('SourceMapConsumer'))
    @Js
    def PyJs_anonymous_176_(aSource, this, arguments, var=var):
        var = Scope({'aSource':aSource, 'this':this, 'arguments':arguments}, var)
        var.registers(['i', 'relativeSource', 'aSource'])
        var.put('relativeSource', var.get('aSource'))
        if (var.get(u"this").get('sourceRoot')!=var.get(u"null")):
            var.put('relativeSource', var.get('util').callprop('relative', var.get(u"this").get('sourceRoot'), var.get('relativeSource')))
        if var.get(u"this").get('_sources').callprop('has', var.get('relativeSource')):
            return var.get(u"this").get('_sources').callprop('indexOf', var.get('relativeSource'))
        pass
        #for JS loop
        var.put('i', Js(0.0))
        while (var.get('i')<var.get(u"this").get('_absoluteSources').get('length')):
            try:
                if (var.get(u"this").get('_absoluteSources').get(var.get('i'))==var.get('aSource')):
                    return var.get('i')
            finally:
                    var.put('i',Js(var.get('i').to_number())+Js(1))
        return (-Js(1.0))
    PyJs_anonymous_176_._set_name('anonymous')
    var.get('BasicSourceMapConsumer').get('prototype').put('_findSourceIndex', PyJs_anonymous_176_)
    @Js
    def PyJs_SourceMapConsumer_fromSourceMap_177_(aSourceMap, aSourceMapURL, this, arguments, var=var):
        var = Scope({'aSourceMap':aSourceMap, 'aSourceMapURL':aSourceMapURL, 'this':this, 'arguments':arguments, 'SourceMapConsumer_fromSourceMap':PyJs_SourceMapConsumer_fromSourceMap_177_}, var)
        var.registers(['destGeneratedMappings', 'names', 'length', 'srcMapping', 'i', 'destOriginalMappings', 'smc', 'generatedMappings', 'aSourceMapURL', 'aSourceMap', 'destMapping', 'sources'])
        var.put('smc', var.get('Object').callprop('create', var.get('BasicSourceMapConsumer').get('prototype')))
        var.put('names', var.get('smc').put('_names', var.get('ArraySet').callprop('fromArray', var.get('aSourceMap').get('_names').callprop('toArray'), Js(True))))
        var.put('sources', var.get('smc').put('_sources', var.get('ArraySet').callprop('fromArray', var.get('aSourceMap').get('_sources').callprop('toArray'), Js(True))))
        var.get('smc').put('sourceRoot', var.get('aSourceMap').get('_sourceRoot'))
        var.get('smc').put('sourcesContent', var.get('aSourceMap').callprop('_generateSourcesContent', var.get('smc').get('_sources').callprop('toArray'), var.get('smc').get('sourceRoot')))
        var.get('smc').put('file', var.get('aSourceMap').get('_file'))
        var.get('smc').put('_sourceMapURL', var.get('aSourceMapURL'))
        @Js
        def PyJs_anonymous_178_(s, this, arguments, var=var):
            var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
            var.registers(['s'])
            return var.get('util').callprop('computeSourceURL', var.get('smc').get('sourceRoot'), var.get('s'), var.get('aSourceMapURL'))
        PyJs_anonymous_178_._set_name('anonymous')
        var.get('smc').put('_absoluteSources', var.get('smc').get('_sources').callprop('toArray').callprop('map', PyJs_anonymous_178_))
        var.put('generatedMappings', var.get('aSourceMap').get('_mappings').callprop('toArray').callprop('slice'))
        var.put('destGeneratedMappings', var.get('smc').put('__generatedMappings', Js([])))
        var.put('destOriginalMappings', var.get('smc').put('__originalMappings', Js([])))
        #for JS loop
        var.put('i', Js(0.0))
        var.put('length', var.get('generatedMappings').get('length'))
        while (var.get('i')<var.get('length')):
            try:
                var.put('srcMapping', var.get('generatedMappings').get(var.get('i')))
                var.put('destMapping', var.get('Mapping').create())
                var.get('destMapping').put('generatedLine', var.get('srcMapping').get('generatedLine'))
                var.get('destMapping').put('generatedColumn', var.get('srcMapping').get('generatedColumn'))
                if var.get('srcMapping').get('source'):
                    var.get('destMapping').put('source', var.get('sources').callprop('indexOf', var.get('srcMapping').get('source')))
                    var.get('destMapping').put('originalLine', var.get('srcMapping').get('originalLine'))
                    var.get('destMapping').put('originalColumn', var.get('srcMapping').get('originalColumn'))
                    if var.get('srcMapping').get('name'):
                        var.get('destMapping').put('name', var.get('names').callprop('indexOf', var.get('srcMapping').get('name')))
                    var.get('destOriginalMappings').callprop('push', var.get('destMapping'))
                var.get('destGeneratedMappings').callprop('push', var.get('destMapping'))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        var.get('quickSort')(var.get('smc').get('__originalMappings'), var.get('util').get('compareByOriginalPositions'))
        return var.get('smc')
    PyJs_SourceMapConsumer_fromSourceMap_177_._set_name('SourceMapConsumer_fromSourceMap')
    var.get('BasicSourceMapConsumer').put('fromSourceMap', PyJs_SourceMapConsumer_fromSourceMap_177_)
    var.get('BasicSourceMapConsumer').get('prototype').put('_version', Js(3.0))
    @Js
    def PyJs_get_180_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'get':PyJs_get_180_}, var)
        var.registers([])
        return var.get(u"this").get('_absoluteSources').callprop('slice')
    PyJs_get_180_._set_name('get')
    PyJs_Object_179_ = Js({'get':PyJs_get_180_})
    var.get('Object').callprop('defineProperty', var.get('BasicSourceMapConsumer').get('prototype'), Js('sources'), PyJs_Object_179_)
    pass
    @Js
    def PyJs_SourceMapConsumer_parseMappings_181_(aStr, aSourceRoot, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'aSourceRoot':aSourceRoot, 'this':this, 'arguments':arguments, 'SourceMapConsumer_parseMappings':PyJs_SourceMapConsumer_parseMappings_181_}, var)
        var.registers(['previousName', 'previousSource', 'cachedSegments', 'value', 'previousOriginalLine', 'aStr', 'end', 'generatedMappings', 'index', 'length', 'temp', 'generatedLine', 'str', 'previousOriginalColumn', 'originalMappings', 'previousGeneratedColumn', 'segment', 'aSourceRoot', 'mapping'])
        var.put('generatedLine', Js(1.0))
        var.put('previousGeneratedColumn', Js(0.0))
        var.put('previousOriginalLine', Js(0.0))
        var.put('previousOriginalColumn', Js(0.0))
        var.put('previousSource', Js(0.0))
        var.put('previousName', Js(0.0))
        var.put('length', var.get('aStr').get('length'))
        var.put('index', Js(0.0))
        PyJs_Object_182_ = Js({})
        var.put('cachedSegments', PyJs_Object_182_)
        PyJs_Object_183_ = Js({})
        var.put('temp', PyJs_Object_183_)
        var.put('originalMappings', Js([]))
        var.put('generatedMappings', Js([]))
        pass
        while (var.get('index')<var.get('length')):
            if PyJsStrictEq(var.get('aStr').callprop('charAt', var.get('index')),Js(';')):
                (var.put('generatedLine',Js(var.get('generatedLine').to_number())+Js(1))-Js(1))
                (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                var.put('previousGeneratedColumn', Js(0.0))
            else:
                if PyJsStrictEq(var.get('aStr').callprop('charAt', var.get('index')),Js(',')):
                    (var.put('index',Js(var.get('index').to_number())+Js(1))-Js(1))
                else:
                    var.put('mapping', var.get('Mapping').create())
                    var.get('mapping').put('generatedLine', var.get('generatedLine'))
                    #for JS loop
                    var.put('end', var.get('index'))
                    while (var.get('end')<var.get('length')):
                        try:
                            if var.get(u"this").callprop('_charIsMappingSeparator', var.get('aStr'), var.get('end')):
                                break
                        finally:
                                (var.put('end',Js(var.get('end').to_number())+Js(1))-Js(1))
                    var.put('str', var.get('aStr').callprop('slice', var.get('index'), var.get('end')))
                    var.put('segment', var.get('cachedSegments').get(var.get('str')))
                    if var.get('segment'):
                        var.put('index', var.get('str').get('length'), '+')
                    else:
                        var.put('segment', Js([]))
                        while (var.get('index')<var.get('end')):
                            var.get('base64VLQ').callprop('decode', var.get('aStr'), var.get('index'), var.get('temp'))
                            var.put('value', var.get('temp').get('value'))
                            var.put('index', var.get('temp').get('rest'))
                            var.get('segment').callprop('push', var.get('value'))
                        if PyJsStrictEq(var.get('segment').get('length'),Js(2.0)):
                            PyJsTempException = JsToPyException(var.get('Error').create(Js('Found a source, but no line and column')))
                            raise PyJsTempException
                        if PyJsStrictEq(var.get('segment').get('length'),Js(3.0)):
                            PyJsTempException = JsToPyException(var.get('Error').create(Js('Found a source and line, but no column')))
                            raise PyJsTempException
                        var.get('cachedSegments').put(var.get('str'), var.get('segment'))
                    var.get('mapping').put('generatedColumn', (var.get('previousGeneratedColumn')+var.get('segment').get('0')))
                    var.put('previousGeneratedColumn', var.get('mapping').get('generatedColumn'))
                    if (var.get('segment').get('length')>Js(1.0)):
                        var.get('mapping').put('source', (var.get('previousSource')+var.get('segment').get('1')))
                        var.put('previousSource', var.get('segment').get('1'), '+')
                        var.get('mapping').put('originalLine', (var.get('previousOriginalLine')+var.get('segment').get('2')))
                        var.put('previousOriginalLine', var.get('mapping').get('originalLine'))
                        var.get('mapping').put('originalLine', Js(1.0), '+')
                        var.get('mapping').put('originalColumn', (var.get('previousOriginalColumn')+var.get('segment').get('3')))
                        var.put('previousOriginalColumn', var.get('mapping').get('originalColumn'))
                        if (var.get('segment').get('length')>Js(4.0)):
                            var.get('mapping').put('name', (var.get('previousName')+var.get('segment').get('4')))
                            var.put('previousName', var.get('segment').get('4'), '+')
                    var.get('generatedMappings').callprop('push', var.get('mapping'))
                    if PyJsStrictEq(var.get('mapping').get('originalLine').typeof(),Js('number')):
                        var.get('originalMappings').callprop('push', var.get('mapping'))
        var.get('quickSort')(var.get('generatedMappings'), var.get('util').get('compareByGeneratedPositionsDeflated'))
        var.get(u"this").put('__generatedMappings', var.get('generatedMappings'))
        var.get('quickSort')(var.get('originalMappings'), var.get('util').get('compareByOriginalPositions'))
        var.get(u"this").put('__originalMappings', var.get('originalMappings'))
    PyJs_SourceMapConsumer_parseMappings_181_._set_name('SourceMapConsumer_parseMappings')
    var.get('BasicSourceMapConsumer').get('prototype').put('_parseMappings', PyJs_SourceMapConsumer_parseMappings_181_)
    @Js
    def PyJs_SourceMapConsumer_findMapping_184_(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias, this, arguments, var=var):
        var = Scope({'aNeedle':aNeedle, 'aMappings':aMappings, 'aLineName':aLineName, 'aColumnName':aColumnName, 'aComparator':aComparator, 'aBias':aBias, 'this':this, 'arguments':arguments, 'SourceMapConsumer_findMapping':PyJs_SourceMapConsumer_findMapping_184_}, var)
        var.registers(['aMappings', 'aLineName', 'aNeedle', 'aComparator', 'aBias', 'aColumnName'])
        if (var.get('aNeedle').get(var.get('aLineName'))<=Js(0.0)):
            PyJsTempException = JsToPyException(var.get('TypeError').create((Js('Line must be greater than or equal to 1, got ')+var.get('aNeedle').get(var.get('aLineName')))))
            raise PyJsTempException
        if (var.get('aNeedle').get(var.get('aColumnName'))<Js(0.0)):
            PyJsTempException = JsToPyException(var.get('TypeError').create((Js('Column must be greater than or equal to 0, got ')+var.get('aNeedle').get(var.get('aColumnName')))))
            raise PyJsTempException
        return var.get('binarySearch').callprop('search', var.get('aNeedle'), var.get('aMappings'), var.get('aComparator'), var.get('aBias'))
    PyJs_SourceMapConsumer_findMapping_184_._set_name('SourceMapConsumer_findMapping')
    var.get('BasicSourceMapConsumer').get('prototype').put('_findMapping', PyJs_SourceMapConsumer_findMapping_184_)
    @Js
    def PyJs_SourceMapConsumer_computeColumnSpans_185_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'SourceMapConsumer_computeColumnSpans':PyJs_SourceMapConsumer_computeColumnSpans_185_}, var)
        var.registers(['index', 'nextMapping', 'mapping'])
        #for JS loop
        var.put('index', Js(0.0))
        while (var.get('index')<var.get(u"this").get('_generatedMappings').get('length')):
            try:
                var.put('mapping', var.get(u"this").get('_generatedMappings').get(var.get('index')))
                if ((var.get('index')+Js(1.0))<var.get(u"this").get('_generatedMappings').get('length')):
                    var.put('nextMapping', var.get(u"this").get('_generatedMappings').get((var.get('index')+Js(1.0))))
                    if PyJsStrictEq(var.get('mapping').get('generatedLine'),var.get('nextMapping').get('generatedLine')):
                        var.get('mapping').put('lastGeneratedColumn', (var.get('nextMapping').get('generatedColumn')-Js(1.0)))
                        continue
                var.get('mapping').put('lastGeneratedColumn', var.get('Infinity'))
            finally:
                    var.put('index',Js(var.get('index').to_number())+Js(1))
    PyJs_SourceMapConsumer_computeColumnSpans_185_._set_name('SourceMapConsumer_computeColumnSpans')
    var.get('BasicSourceMapConsumer').get('prototype').put('computeColumnSpans', PyJs_SourceMapConsumer_computeColumnSpans_185_)
    @Js
    def PyJs_SourceMapConsumer_originalPositionFor_186_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'SourceMapConsumer_originalPositionFor':PyJs_SourceMapConsumer_originalPositionFor_186_}, var)
        var.registers(['aArgs', 'needle', 'source', 'index', 'name', 'mapping'])
        PyJs_Object_187_ = Js({'generatedLine':var.get('util').callprop('getArg', var.get('aArgs'), Js('line')),'generatedColumn':var.get('util').callprop('getArg', var.get('aArgs'), Js('column'))})
        var.put('needle', PyJs_Object_187_)
        var.put('index', var.get(u"this").callprop('_findMapping', var.get('needle'), var.get(u"this").get('_generatedMappings'), Js('generatedLine'), Js('generatedColumn'), var.get('util').get('compareByGeneratedPositionsDeflated'), var.get('util').callprop('getArg', var.get('aArgs'), Js('bias'), var.get('SourceMapConsumer').get('GREATEST_LOWER_BOUND'))))
        if (var.get('index')>=Js(0.0)):
            var.put('mapping', var.get(u"this").get('_generatedMappings').get(var.get('index')))
            if PyJsStrictEq(var.get('mapping').get('generatedLine'),var.get('needle').get('generatedLine')):
                var.put('source', var.get('util').callprop('getArg', var.get('mapping'), Js('source'), var.get(u"null")))
                if PyJsStrictNeq(var.get('source'),var.get(u"null")):
                    var.put('source', var.get(u"this").get('_sources').callprop('at', var.get('source')))
                    var.put('source', var.get('util').callprop('computeSourceURL', var.get(u"this").get('sourceRoot'), var.get('source'), var.get(u"this").get('_sourceMapURL')))
                var.put('name', var.get('util').callprop('getArg', var.get('mapping'), Js('name'), var.get(u"null")))
                if PyJsStrictNeq(var.get('name'),var.get(u"null")):
                    var.put('name', var.get(u"this").get('_names').callprop('at', var.get('name')))
                PyJs_Object_188_ = Js({'source':var.get('source'),'line':var.get('util').callprop('getArg', var.get('mapping'), Js('originalLine'), var.get(u"null")),'column':var.get('util').callprop('getArg', var.get('mapping'), Js('originalColumn'), var.get(u"null")),'name':var.get('name')})
                return PyJs_Object_188_
        PyJs_Object_189_ = Js({'source':var.get(u"null"),'line':var.get(u"null"),'column':var.get(u"null"),'name':var.get(u"null")})
        return PyJs_Object_189_
    PyJs_SourceMapConsumer_originalPositionFor_186_._set_name('SourceMapConsumer_originalPositionFor')
    var.get('BasicSourceMapConsumer').get('prototype').put('originalPositionFor', PyJs_SourceMapConsumer_originalPositionFor_186_)
    @Js
    def PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_190_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'BasicSourceMapConsumer_hasContentsOfAllSources':PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_190_}, var)
        var.registers([])
        if var.get(u"this").get('sourcesContent').neg():
            return Js(False)
        @Js
        def PyJs_anonymous_191_(sc, this, arguments, var=var):
            var = Scope({'sc':sc, 'this':this, 'arguments':arguments}, var)
            var.registers(['sc'])
            return (var.get('sc')==var.get(u"null"))
        PyJs_anonymous_191_._set_name('anonymous')
        return ((var.get(u"this").get('sourcesContent').get('length')>=var.get(u"this").get('_sources').callprop('size')) and var.get(u"this").get('sourcesContent').callprop('some', PyJs_anonymous_191_).neg())
    PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_190_._set_name('BasicSourceMapConsumer_hasContentsOfAllSources')
    var.get('BasicSourceMapConsumer').get('prototype').put('hasContentsOfAllSources', PyJs_BasicSourceMapConsumer_hasContentsOfAllSources_190_)
    @Js
    def PyJs_SourceMapConsumer_sourceContentFor_192_(aSource, nullOnMissing, this, arguments, var=var):
        var = Scope({'aSource':aSource, 'nullOnMissing':nullOnMissing, 'this':this, 'arguments':arguments, 'SourceMapConsumer_sourceContentFor':PyJs_SourceMapConsumer_sourceContentFor_192_}, var)
        var.registers(['fileUriAbsPath', 'nullOnMissing', 'relativeSource', 'index', 'url', 'aSource'])
        if var.get(u"this").get('sourcesContent').neg():
            return var.get(u"null")
        var.put('index', var.get(u"this").callprop('_findSourceIndex', var.get('aSource')))
        if (var.get('index')>=Js(0.0)):
            return var.get(u"this").get('sourcesContent').get(var.get('index'))
        var.put('relativeSource', var.get('aSource'))
        if (var.get(u"this").get('sourceRoot')!=var.get(u"null")):
            var.put('relativeSource', var.get('util').callprop('relative', var.get(u"this").get('sourceRoot'), var.get('relativeSource')))
        pass
        if ((var.get(u"this").get('sourceRoot')!=var.get(u"null")) and var.put('url', var.get('util').callprop('urlParse', var.get(u"this").get('sourceRoot')))):
            var.put('fileUriAbsPath', var.get('relativeSource').callprop('replace', JsRegExp('/^file:\\/\\//'), Js('')))
            if ((var.get('url').get('scheme')==Js('file')) and var.get(u"this").get('_sources').callprop('has', var.get('fileUriAbsPath'))):
                return var.get(u"this").get('sourcesContent').get(var.get(u"this").get('_sources').callprop('indexOf', var.get('fileUriAbsPath')))
            if ((var.get('url').get('path').neg() or (var.get('url').get('path')==Js('/'))) and var.get(u"this").get('_sources').callprop('has', (Js('/')+var.get('relativeSource')))):
                return var.get(u"this").get('sourcesContent').get(var.get(u"this").get('_sources').callprop('indexOf', (Js('/')+var.get('relativeSource'))))
        if var.get('nullOnMissing'):
            return var.get(u"null")
        else:
            PyJsTempException = JsToPyException(var.get('Error').create(((Js('"')+var.get('relativeSource'))+Js('" is not in the SourceMap.'))))
            raise PyJsTempException
    PyJs_SourceMapConsumer_sourceContentFor_192_._set_name('SourceMapConsumer_sourceContentFor')
    var.get('BasicSourceMapConsumer').get('prototype').put('sourceContentFor', PyJs_SourceMapConsumer_sourceContentFor_192_)
    @Js
    def PyJs_SourceMapConsumer_generatedPositionFor_193_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'SourceMapConsumer_generatedPositionFor':PyJs_SourceMapConsumer_generatedPositionFor_193_}, var)
        var.registers(['aArgs', 'needle', 'source', 'index', 'mapping'])
        var.put('source', var.get('util').callprop('getArg', var.get('aArgs'), Js('source')))
        var.put('source', var.get(u"this").callprop('_findSourceIndex', var.get('source')))
        if (var.get('source')<Js(0.0)):
            PyJs_Object_194_ = Js({'line':var.get(u"null"),'column':var.get(u"null"),'lastColumn':var.get(u"null")})
            return PyJs_Object_194_
        PyJs_Object_195_ = Js({'source':var.get('source'),'originalLine':var.get('util').callprop('getArg', var.get('aArgs'), Js('line')),'originalColumn':var.get('util').callprop('getArg', var.get('aArgs'), Js('column'))})
        var.put('needle', PyJs_Object_195_)
        var.put('index', var.get(u"this").callprop('_findMapping', var.get('needle'), var.get(u"this").get('_originalMappings'), Js('originalLine'), Js('originalColumn'), var.get('util').get('compareByOriginalPositions'), var.get('util').callprop('getArg', var.get('aArgs'), Js('bias'), var.get('SourceMapConsumer').get('GREATEST_LOWER_BOUND'))))
        if (var.get('index')>=Js(0.0)):
            var.put('mapping', var.get(u"this").get('_originalMappings').get(var.get('index')))
            if PyJsStrictEq(var.get('mapping').get('source'),var.get('needle').get('source')):
                PyJs_Object_196_ = Js({'line':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedLine'), var.get(u"null")),'column':var.get('util').callprop('getArg', var.get('mapping'), Js('generatedColumn'), var.get(u"null")),'lastColumn':var.get('util').callprop('getArg', var.get('mapping'), Js('lastGeneratedColumn'), var.get(u"null"))})
                return PyJs_Object_196_
        PyJs_Object_197_ = Js({'line':var.get(u"null"),'column':var.get(u"null"),'lastColumn':var.get(u"null")})
        return PyJs_Object_197_
    PyJs_SourceMapConsumer_generatedPositionFor_193_._set_name('SourceMapConsumer_generatedPositionFor')
    var.get('BasicSourceMapConsumer').get('prototype').put('generatedPositionFor', PyJs_SourceMapConsumer_generatedPositionFor_193_)
    var.get('exports').put('BasicSourceMapConsumer', var.get('BasicSourceMapConsumer'))
    pass
    var.get('IndexedSourceMapConsumer').put('prototype', var.get('Object').callprop('create', var.get('SourceMapConsumer').get('prototype')))
    var.get('IndexedSourceMapConsumer').get('prototype').put('constructor', var.get('SourceMapConsumer'))
    var.get('IndexedSourceMapConsumer').get('prototype').put('_version', Js(3.0))
    @Js
    def PyJs_get_203_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'get':PyJs_get_203_}, var)
        var.registers(['j', 'i', 'sources'])
        var.put('sources', Js([]))
        #for JS loop
        var.put('i', Js(0.0))
        while (var.get('i')<var.get(u"this").get('_sections').get('length')):
            try:
                #for JS loop
                var.put('j', Js(0.0))
                while (var.get('j')<var.get(u"this").get('_sections').get(var.get('i')).get('consumer').get('sources').get('length')):
                    try:
                        var.get('sources').callprop('push', var.get(u"this").get('_sections').get(var.get('i')).get('consumer').get('sources').get(var.get('j')))
                    finally:
                            (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('sources')
    PyJs_get_203_._set_name('get')
    PyJs_Object_202_ = Js({'get':PyJs_get_203_})
    var.get('Object').callprop('defineProperty', var.get('IndexedSourceMapConsumer').get('prototype'), Js('sources'), PyJs_Object_202_)
    @Js
    def PyJs_IndexedSourceMapConsumer_originalPositionFor_204_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'IndexedSourceMapConsumer_originalPositionFor':PyJs_IndexedSourceMapConsumer_originalPositionFor_204_}, var)
        var.registers(['sectionIndex', 'section', 'aArgs', 'needle'])
        PyJs_Object_205_ = Js({'generatedLine':var.get('util').callprop('getArg', var.get('aArgs'), Js('line')),'generatedColumn':var.get('util').callprop('getArg', var.get('aArgs'), Js('column'))})
        var.put('needle', PyJs_Object_205_)
        @Js
        def PyJs_anonymous_206_(needle, section, this, arguments, var=var):
            var = Scope({'needle':needle, 'section':section, 'this':this, 'arguments':arguments}, var)
            var.registers(['section', 'cmp', 'needle'])
            var.put('cmp', (var.get('needle').get('generatedLine')-var.get('section').get('generatedOffset').get('generatedLine')))
            if var.get('cmp'):
                return var.get('cmp')
            return (var.get('needle').get('generatedColumn')-var.get('section').get('generatedOffset').get('generatedColumn'))
        PyJs_anonymous_206_._set_name('anonymous')
        var.put('sectionIndex', var.get('binarySearch').callprop('search', var.get('needle'), var.get(u"this").get('_sections'), PyJs_anonymous_206_))
        var.put('section', var.get(u"this").get('_sections').get(var.get('sectionIndex')))
        if var.get('section').neg():
            PyJs_Object_207_ = Js({'source':var.get(u"null"),'line':var.get(u"null"),'column':var.get(u"null"),'name':var.get(u"null")})
            return PyJs_Object_207_
        PyJs_Object_208_ = Js({'line':(var.get('needle').get('generatedLine')-(var.get('section').get('generatedOffset').get('generatedLine')-Js(1.0))),'column':(var.get('needle').get('generatedColumn')-((var.get('section').get('generatedOffset').get('generatedColumn')-Js(1.0)) if PyJsStrictEq(var.get('section').get('generatedOffset').get('generatedLine'),var.get('needle').get('generatedLine')) else Js(0.0))),'bias':var.get('aArgs').get('bias')})
        return var.get('section').get('consumer').callprop('originalPositionFor', PyJs_Object_208_)
    PyJs_IndexedSourceMapConsumer_originalPositionFor_204_._set_name('IndexedSourceMapConsumer_originalPositionFor')
    var.get('IndexedSourceMapConsumer').get('prototype').put('originalPositionFor', PyJs_IndexedSourceMapConsumer_originalPositionFor_204_)
    @Js
    def PyJs_IndexedSourceMapConsumer_hasContentsOfAllSources_209_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'IndexedSourceMapConsumer_hasContentsOfAllSources':PyJs_IndexedSourceMapConsumer_hasContentsOfAllSources_209_}, var)
        var.registers([])
        @Js
        def PyJs_anonymous_210_(s, this, arguments, var=var):
            var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
            var.registers(['s'])
            return var.get('s').get('consumer').callprop('hasContentsOfAllSources')
        PyJs_anonymous_210_._set_name('anonymous')
        return var.get(u"this").get('_sections').callprop('every', PyJs_anonymous_210_)
    PyJs_IndexedSourceMapConsumer_hasContentsOfAllSources_209_._set_name('IndexedSourceMapConsumer_hasContentsOfAllSources')
    var.get('IndexedSourceMapConsumer').get('prototype').put('hasContentsOfAllSources', PyJs_IndexedSourceMapConsumer_hasContentsOfAllSources_209_)
    @Js
    def PyJs_IndexedSourceMapConsumer_sourceContentFor_211_(aSource, nullOnMissing, this, arguments, var=var):
        var = Scope({'aSource':aSource, 'nullOnMissing':nullOnMissing, 'this':this, 'arguments':arguments, 'IndexedSourceMapConsumer_sourceContentFor':PyJs_IndexedSourceMapConsumer_sourceContentFor_211_}, var)
        var.registers(['nullOnMissing', 'section', 'i', 'content', 'aSource'])
        #for JS loop
        var.put('i', Js(0.0))
        while (var.get('i')<var.get(u"this").get('_sections').get('length')):
            try:
                var.put('section', var.get(u"this").get('_sections').get(var.get('i')))
                var.put('content', var.get('section').get('consumer').callprop('sourceContentFor', var.get('aSource'), Js(True)))
                if var.get('content'):
                    return var.get('content')
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        if var.get('nullOnMissing'):
            return var.get(u"null")
        else:
            PyJsTempException = JsToPyException(var.get('Error').create(((Js('"')+var.get('aSource'))+Js('" is not in the SourceMap.'))))
            raise PyJsTempException
    PyJs_IndexedSourceMapConsumer_sourceContentFor_211_._set_name('IndexedSourceMapConsumer_sourceContentFor')
    var.get('IndexedSourceMapConsumer').get('prototype').put('sourceContentFor', PyJs_IndexedSourceMapConsumer_sourceContentFor_211_)
    @Js
    def PyJs_IndexedSourceMapConsumer_generatedPositionFor_212_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'IndexedSourceMapConsumer_generatedPositionFor':PyJs_IndexedSourceMapConsumer_generatedPositionFor_212_}, var)
        var.registers(['ret', 'aArgs', 'section', 'i', 'generatedPosition'])
        #for JS loop
        var.put('i', Js(0.0))
        while (var.get('i')<var.get(u"this").get('_sections').get('length')):
            try:
                var.put('section', var.get(u"this").get('_sections').get(var.get('i')))
                if PyJsStrictEq(var.get('section').get('consumer').callprop('_findSourceIndex', var.get('util').callprop('getArg', var.get('aArgs'), Js('source'))),(-Js(1.0))):
                    continue
                var.put('generatedPosition', var.get('section').get('consumer').callprop('generatedPositionFor', var.get('aArgs')))
                if var.get('generatedPosition'):
                    PyJs_Object_213_ = Js({'line':(var.get('generatedPosition').get('line')+(var.get('section').get('generatedOffset').get('generatedLine')-Js(1.0))),'column':(var.get('generatedPosition').get('column')+((var.get('section').get('generatedOffset').get('generatedColumn')-Js(1.0)) if PyJsStrictEq(var.get('section').get('generatedOffset').get('generatedLine'),var.get('generatedPosition').get('line')) else Js(0.0)))})
                    var.put('ret', PyJs_Object_213_)
                    return var.get('ret')
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        PyJs_Object_214_ = Js({'line':var.get(u"null"),'column':var.get(u"null")})
        return PyJs_Object_214_
    PyJs_IndexedSourceMapConsumer_generatedPositionFor_212_._set_name('IndexedSourceMapConsumer_generatedPositionFor')
    var.get('IndexedSourceMapConsumer').get('prototype').put('generatedPositionFor', PyJs_IndexedSourceMapConsumer_generatedPositionFor_212_)
    @Js
    def PyJs_IndexedSourceMapConsumer_parseMappings_215_(aStr, aSourceRoot, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'aSourceRoot':aSourceRoot, 'this':this, 'arguments':arguments, 'IndexedSourceMapConsumer_parseMappings':PyJs_IndexedSourceMapConsumer_parseMappings_215_}, var)
        var.registers(['sectionMappings', 'adjustedMapping', 'section', 'aStr', 'i', 'source', 'aSourceRoot', 'j', 'name', 'mapping'])
        var.get(u"this").put('__generatedMappings', Js([]))
        var.get(u"this").put('__originalMappings', Js([]))
        #for JS loop
        var.put('i', Js(0.0))
        while (var.get('i')<var.get(u"this").get('_sections').get('length')):
            try:
                var.put('section', var.get(u"this").get('_sections').get(var.get('i')))
                var.put('sectionMappings', var.get('section').get('consumer').get('_generatedMappings'))
                #for JS loop
                var.put('j', Js(0.0))
                while (var.get('j')<var.get('sectionMappings').get('length')):
                    try:
                        var.put('mapping', var.get('sectionMappings').get(var.get('j')))
                        var.put('source', var.get('section').get('consumer').get('_sources').callprop('at', var.get('mapping').get('source')))
                        var.put('source', var.get('util').callprop('computeSourceURL', var.get('section').get('consumer').get('sourceRoot'), var.get('source'), var.get(u"this").get('_sourceMapURL')))
                        var.get(u"this").get('_sources').callprop('add', var.get('source'))
                        var.put('source', var.get(u"this").get('_sources').callprop('indexOf', var.get('source')))
                        var.put('name', var.get(u"null"))
                        if var.get('mapping').get('name'):
                            var.put('name', var.get('section').get('consumer').get('_names').callprop('at', var.get('mapping').get('name')))
                            var.get(u"this").get('_names').callprop('add', var.get('name'))
                            var.put('name', var.get(u"this").get('_names').callprop('indexOf', var.get('name')))
                        PyJs_Object_216_ = Js({'source':var.get('source'),'generatedLine':(var.get('mapping').get('generatedLine')+(var.get('section').get('generatedOffset').get('generatedLine')-Js(1.0))),'generatedColumn':(var.get('mapping').get('generatedColumn')+((var.get('section').get('generatedOffset').get('generatedColumn')-Js(1.0)) if PyJsStrictEq(var.get('section').get('generatedOffset').get('generatedLine'),var.get('mapping').get('generatedLine')) else Js(0.0))),'originalLine':var.get('mapping').get('originalLine'),'originalColumn':var.get('mapping').get('originalColumn'),'name':var.get('name')})
                        var.put('adjustedMapping', PyJs_Object_216_)
                        var.get(u"this").get('__generatedMappings').callprop('push', var.get('adjustedMapping'))
                        if PyJsStrictEq(var.get('adjustedMapping').get('originalLine').typeof(),Js('number')):
                            var.get(u"this").get('__originalMappings').callprop('push', var.get('adjustedMapping'))
                    finally:
                            (var.put('j',Js(var.get('j').to_number())+Js(1))-Js(1))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        var.get('quickSort')(var.get(u"this").get('__generatedMappings'), var.get('util').get('compareByGeneratedPositionsDeflated'))
        var.get('quickSort')(var.get(u"this").get('__originalMappings'), var.get('util').get('compareByOriginalPositions'))
    PyJs_IndexedSourceMapConsumer_parseMappings_215_._set_name('IndexedSourceMapConsumer_parseMappings')
    var.get('IndexedSourceMapConsumer').get('prototype').put('_parseMappings', PyJs_IndexedSourceMapConsumer_parseMappings_215_)
    var.get('exports').put('IndexedSourceMapConsumer', var.get('IndexedSourceMapConsumer'))
PyJs_anonymous_159_._set_name('anonymous')
PyJs_Object_217_ = Js({'./array-set':Js(2.0),'./base64-vlq':Js(3.0),'./binary-search':Js(5.0),'./quick-sort':Js(7.0),'./util':Js(11.0)})
@Js
def PyJs_anonymous_218_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['module', 'MappingList', 'require', 'ArraySet', 'exports', 'SourceMapGenerator', 'base64VLQ', 'util'])
    @Js
    def PyJsHoisted_SourceMapGenerator_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments}, var)
        var.registers(['aArgs'])
        if var.get('aArgs').neg():
            PyJs_Object_219_ = Js({})
            var.put('aArgs', PyJs_Object_219_)
        var.get(u"this").put('_file', var.get('util').callprop('getArg', var.get('aArgs'), Js('file'), var.get(u"null")))
        var.get(u"this").put('_sourceRoot', var.get('util').callprop('getArg', var.get('aArgs'), Js('sourceRoot'), var.get(u"null")))
        var.get(u"this").put('_skipValidation', var.get('util').callprop('getArg', var.get('aArgs'), Js('skipValidation'), Js(False)))
        var.get(u"this").put('_sources', var.get('ArraySet').create())
        var.get(u"this").put('_names', var.get('ArraySet').create())
        var.get(u"this").put('_mappings', var.get('MappingList').create())
        var.get(u"this").put('_sourcesContents', var.get(u"null"))
    PyJsHoisted_SourceMapGenerator_.func_name = 'SourceMapGenerator'
    var.put('SourceMapGenerator', PyJsHoisted_SourceMapGenerator_)
    var.put('base64VLQ', var.get('require')(Js('./base64-vlq')))
    var.put('util', var.get('require')(Js('./util')))
    var.put('ArraySet', var.get('require')(Js('./array-set')).get('ArraySet'))
    var.put('MappingList', var.get('require')(Js('./mapping-list')).get('MappingList'))
    pass
    var.get('SourceMapGenerator').get('prototype').put('_version', Js(3.0))
    @Js
    def PyJs_SourceMapGenerator_fromSourceMap_220_(aSourceMapConsumer, this, arguments, var=var):
        var = Scope({'aSourceMapConsumer':aSourceMapConsumer, 'this':this, 'arguments':arguments, 'SourceMapGenerator_fromSourceMap':PyJs_SourceMapGenerator_fromSourceMap_220_}, var)
        var.registers(['sourceRoot', 'aSourceMapConsumer', 'generator'])
        var.put('sourceRoot', var.get('aSourceMapConsumer').get('sourceRoot'))
        PyJs_Object_221_ = Js({'file':var.get('aSourceMapConsumer').get('file'),'sourceRoot':var.get('sourceRoot')})
        var.put('generator', var.get('SourceMapGenerator').create(PyJs_Object_221_))
        @Js
        def PyJs_anonymous_222_(mapping, this, arguments, var=var):
            var = Scope({'mapping':mapping, 'this':this, 'arguments':arguments}, var)
            var.registers(['mapping', 'newMapping'])
            PyJs_Object_224_ = Js({'line':var.get('mapping').get('generatedLine'),'column':var.get('mapping').get('generatedColumn')})
            PyJs_Object_223_ = Js({'generated':PyJs_Object_224_})
            var.put('newMapping', PyJs_Object_223_)
            if (var.get('mapping').get('source')!=var.get(u"null")):
                var.get('newMapping').put('source', var.get('mapping').get('source'))
                if (var.get('sourceRoot')!=var.get(u"null")):
                    var.get('newMapping').put('source', var.get('util').callprop('relative', var.get('sourceRoot'), var.get('newMapping').get('source')))
                PyJs_Object_225_ = Js({'line':var.get('mapping').get('originalLine'),'column':var.get('mapping').get('originalColumn')})
                var.get('newMapping').put('original', PyJs_Object_225_)
                if (var.get('mapping').get('name')!=var.get(u"null")):
                    var.get('newMapping').put('name', var.get('mapping').get('name'))
            var.get('generator').callprop('addMapping', var.get('newMapping'))
        PyJs_anonymous_222_._set_name('anonymous')
        var.get('aSourceMapConsumer').callprop('eachMapping', PyJs_anonymous_222_)
        @Js
        def PyJs_anonymous_226_(sourceFile, this, arguments, var=var):
            var = Scope({'sourceFile':sourceFile, 'this':this, 'arguments':arguments}, var)
            var.registers(['content', 'sourceRelative', 'sourceFile'])
            var.put('sourceRelative', var.get('sourceFile'))
            if PyJsStrictNeq(var.get('sourceRoot'),var.get(u"null")):
                var.put('sourceRelative', var.get('util').callprop('relative', var.get('sourceRoot'), var.get('sourceFile')))
            if var.get('generator').get('_sources').callprop('has', var.get('sourceRelative')).neg():
                var.get('generator').get('_sources').callprop('add', var.get('sourceRelative'))
            var.put('content', var.get('aSourceMapConsumer').callprop('sourceContentFor', var.get('sourceFile')))
            if (var.get('content')!=var.get(u"null")):
                var.get('generator').callprop('setSourceContent', var.get('sourceFile'), var.get('content'))
        PyJs_anonymous_226_._set_name('anonymous')
        var.get('aSourceMapConsumer').get('sources').callprop('forEach', PyJs_anonymous_226_)
        return var.get('generator')
    PyJs_SourceMapGenerator_fromSourceMap_220_._set_name('SourceMapGenerator_fromSourceMap')
    var.get('SourceMapGenerator').put('fromSourceMap', PyJs_SourceMapGenerator_fromSourceMap_220_)
    @Js
    def PyJs_SourceMapGenerator_addMapping_227_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'SourceMapGenerator_addMapping':PyJs_SourceMapGenerator_addMapping_227_}, var)
        var.registers(['aArgs', 'generated', 'source', 'original', 'name'])
        var.put('generated', var.get('util').callprop('getArg', var.get('aArgs'), Js('generated')))
        var.put('original', var.get('util').callprop('getArg', var.get('aArgs'), Js('original'), var.get(u"null")))
        var.put('source', var.get('util').callprop('getArg', var.get('aArgs'), Js('source'), var.get(u"null")))
        var.put('name', var.get('util').callprop('getArg', var.get('aArgs'), Js('name'), var.get(u"null")))
        if var.get(u"this").get('_skipValidation').neg():
            var.get(u"this").callprop('_validateMapping', var.get('generated'), var.get('original'), var.get('source'), var.get('name'))
        if (var.get('source')!=var.get(u"null")):
            var.put('source', var.get('String')(var.get('source')))
            if var.get(u"this").get('_sources').callprop('has', var.get('source')).neg():
                var.get(u"this").get('_sources').callprop('add', var.get('source'))
        if (var.get('name')!=var.get(u"null")):
            var.put('name', var.get('String')(var.get('name')))
            if var.get(u"this").get('_names').callprop('has', var.get('name')).neg():
                var.get(u"this").get('_names').callprop('add', var.get('name'))
        PyJs_Object_228_ = Js({'generatedLine':var.get('generated').get('line'),'generatedColumn':var.get('generated').get('column'),'originalLine':((var.get('original')!=var.get(u"null")) and var.get('original').get('line')),'originalColumn':((var.get('original')!=var.get(u"null")) and var.get('original').get('column')),'source':var.get('source'),'name':var.get('name')})
        var.get(u"this").get('_mappings').callprop('add', PyJs_Object_228_)
    PyJs_SourceMapGenerator_addMapping_227_._set_name('SourceMapGenerator_addMapping')
    var.get('SourceMapGenerator').get('prototype').put('addMapping', PyJs_SourceMapGenerator_addMapping_227_)
    @Js
    def PyJs_SourceMapGenerator_setSourceContent_229_(aSourceFile, aSourceContent, this, arguments, var=var):
        var = Scope({'aSourceFile':aSourceFile, 'aSourceContent':aSourceContent, 'this':this, 'arguments':arguments, 'SourceMapGenerator_setSourceContent':PyJs_SourceMapGenerator_setSourceContent_229_}, var)
        var.registers(['aSourceContent', 'source', 'aSourceFile'])
        var.put('source', var.get('aSourceFile'))
        if (var.get(u"this").get('_sourceRoot')!=var.get(u"null")):
            var.put('source', var.get('util').callprop('relative', var.get(u"this").get('_sourceRoot'), var.get('source')))
        if (var.get('aSourceContent')!=var.get(u"null")):
            if var.get(u"this").get('_sourcesContents').neg():
                var.get(u"this").put('_sourcesContents', var.get('Object').callprop('create', var.get(u"null")))
            var.get(u"this").get('_sourcesContents').put(var.get('util').callprop('toSetString', var.get('source')), var.get('aSourceContent'))
        else:
            if var.get(u"this").get('_sourcesContents'):
                var.get(u"this").get('_sourcesContents').delete(var.get('util').callprop('toSetString', var.get('source')))
                if PyJsStrictEq(var.get('Object').callprop('keys', var.get(u"this").get('_sourcesContents')).get('length'),Js(0.0)):
                    var.get(u"this").put('_sourcesContents', var.get(u"null"))
    PyJs_SourceMapGenerator_setSourceContent_229_._set_name('SourceMapGenerator_setSourceContent')
    var.get('SourceMapGenerator').get('prototype').put('setSourceContent', PyJs_SourceMapGenerator_setSourceContent_229_)
    @Js
    def PyJs_SourceMapGenerator_applySourceMap_230_(aSourceMapConsumer, aSourceFile, aSourceMapPath, this, arguments, var=var):
        var = Scope({'aSourceMapConsumer':aSourceMapConsumer, 'aSourceFile':aSourceFile, 'aSourceMapPath':aSourceMapPath, 'this':this, 'arguments':arguments, 'SourceMapGenerator_applySourceMap':PyJs_SourceMapGenerator_applySourceMap_230_}, var)
        var.registers(['aSourceMapConsumer', 'newNames', 'aSourceMapPath', 'sourceFile', 'newSources', 'sourceRoot', 'aSourceFile'])
        var.put('sourceFile', var.get('aSourceFile'))
        if (var.get('aSourceFile')==var.get(u"null")):
            if (var.get('aSourceMapConsumer').get('file')==var.get(u"null")):
                PyJsTempException = JsToPyException(var.get('Error').create((Js('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ')+Js('or the source map\'s "file" property. Both were omitted.'))))
                raise PyJsTempException
            var.put('sourceFile', var.get('aSourceMapConsumer').get('file'))
        var.put('sourceRoot', var.get(u"this").get('_sourceRoot'))
        if (var.get('sourceRoot')!=var.get(u"null")):
            var.put('sourceFile', var.get('util').callprop('relative', var.get('sourceRoot'), var.get('sourceFile')))
        var.put('newSources', var.get('ArraySet').create())
        var.put('newNames', var.get('ArraySet').create())
        @Js
        def PyJs_anonymous_231_(mapping, this, arguments, var=var):
            var = Scope({'mapping':mapping, 'this':this, 'arguments':arguments}, var)
            var.registers(['source', 'original', 'name', 'mapping'])
            if (PyJsStrictEq(var.get('mapping').get('source'),var.get('sourceFile')) and (var.get('mapping').get('originalLine')!=var.get(u"null"))):
                PyJs_Object_232_ = Js({'line':var.get('mapping').get('originalLine'),'column':var.get('mapping').get('originalColumn')})
                var.put('original', var.get('aSourceMapConsumer').callprop('originalPositionFor', PyJs_Object_232_))
                if (var.get('original').get('source')!=var.get(u"null")):
                    var.get('mapping').put('source', var.get('original').get('source'))
                    if (var.get('aSourceMapPath')!=var.get(u"null")):
                        var.get('mapping').put('source', var.get('util').callprop('join', var.get('aSourceMapPath'), var.get('mapping').get('source')))
                    if (var.get('sourceRoot')!=var.get(u"null")):
                        var.get('mapping').put('source', var.get('util').callprop('relative', var.get('sourceRoot'), var.get('mapping').get('source')))
                    var.get('mapping').put('originalLine', var.get('original').get('line'))
                    var.get('mapping').put('originalColumn', var.get('original').get('column'))
                    if (var.get('original').get('name')!=var.get(u"null")):
                        var.get('mapping').put('name', var.get('original').get('name'))
            var.put('source', var.get('mapping').get('source'))
            if ((var.get('source')!=var.get(u"null")) and var.get('newSources').callprop('has', var.get('source')).neg()):
                var.get('newSources').callprop('add', var.get('source'))
            var.put('name', var.get('mapping').get('name'))
            if ((var.get('name')!=var.get(u"null")) and var.get('newNames').callprop('has', var.get('name')).neg()):
                var.get('newNames').callprop('add', var.get('name'))
        PyJs_anonymous_231_._set_name('anonymous')
        var.get(u"this").get('_mappings').callprop('unsortedForEach', PyJs_anonymous_231_, var.get(u"this"))
        var.get(u"this").put('_sources', var.get('newSources'))
        var.get(u"this").put('_names', var.get('newNames'))
        @Js
        def PyJs_anonymous_233_(sourceFile, this, arguments, var=var):
            var = Scope({'sourceFile':sourceFile, 'this':this, 'arguments':arguments}, var)
            var.registers(['content', 'sourceFile'])
            var.put('content', var.get('aSourceMapConsumer').callprop('sourceContentFor', var.get('sourceFile')))
            if (var.get('content')!=var.get(u"null")):
                if (var.get('aSourceMapPath')!=var.get(u"null")):
                    var.put('sourceFile', var.get('util').callprop('join', var.get('aSourceMapPath'), var.get('sourceFile')))
                if (var.get('sourceRoot')!=var.get(u"null")):
                    var.put('sourceFile', var.get('util').callprop('relative', var.get('sourceRoot'), var.get('sourceFile')))
                var.get(u"this").callprop('setSourceContent', var.get('sourceFile'), var.get('content'))
        PyJs_anonymous_233_._set_name('anonymous')
        var.get('aSourceMapConsumer').get('sources').callprop('forEach', PyJs_anonymous_233_, var.get(u"this"))
    PyJs_SourceMapGenerator_applySourceMap_230_._set_name('SourceMapGenerator_applySourceMap')
    var.get('SourceMapGenerator').get('prototype').put('applySourceMap', PyJs_SourceMapGenerator_applySourceMap_230_)
    @Js
    def PyJs_SourceMapGenerator_validateMapping_234_(aGenerated, aOriginal, aSource, aName, this, arguments, var=var):
        var = Scope({'aGenerated':aGenerated, 'aOriginal':aOriginal, 'aSource':aSource, 'aName':aName, 'this':this, 'arguments':arguments, 'SourceMapGenerator_validateMapping':PyJs_SourceMapGenerator_validateMapping_234_}, var)
        var.registers(['aOriginal', 'aGenerated', 'aSource', 'aName'])
        if ((var.get('aOriginal') and PyJsStrictNeq(var.get('aOriginal').get('line').typeof(),Js('number'))) and PyJsStrictNeq(var.get('aOriginal').get('column').typeof(),Js('number'))):
            PyJsTempException = JsToPyException(var.get('Error').create(((Js('original.line and original.column are not numbers -- you probably meant to omit ')+Js('the original mapping entirely and only map the generated position. If so, pass '))+Js('null for the original mapping instead of an object with empty or null values.'))))
            raise PyJsTempException
        if (((((((var.get('aGenerated') and var.get('aGenerated').contains(Js('line'))) and var.get('aGenerated').contains(Js('column'))) and (var.get('aGenerated').get('line')>Js(0.0))) and (var.get('aGenerated').get('column')>=Js(0.0))) and var.get('aOriginal').neg()) and var.get('aSource').neg()) and var.get('aName').neg()):
            return var.get('undefined')
        else:
            def PyJs_LONG_235_(var=var):
                return (((((((((var.get('aGenerated') and var.get('aGenerated').contains(Js('line'))) and var.get('aGenerated').contains(Js('column'))) and var.get('aOriginal')) and var.get('aOriginal').contains(Js('line'))) and var.get('aOriginal').contains(Js('column'))) and (var.get('aGenerated').get('line')>Js(0.0))) and (var.get('aGenerated').get('column')>=Js(0.0))) and (var.get('aOriginal').get('line')>Js(0.0))) and (var.get('aOriginal').get('column')>=Js(0.0)))
            if (PyJs_LONG_235_() and var.get('aSource')):
                return var.get('undefined')
            else:
                PyJs_Object_236_ = Js({'generated':var.get('aGenerated'),'source':var.get('aSource'),'original':var.get('aOriginal'),'name':var.get('aName')})
                PyJsTempException = JsToPyException(var.get('Error').create((Js('Invalid mapping: ')+var.get('JSON').callprop('stringify', PyJs_Object_236_))))
                raise PyJsTempException
    PyJs_SourceMapGenerator_validateMapping_234_._set_name('SourceMapGenerator_validateMapping')
    var.get('SourceMapGenerator').get('prototype').put('_validateMapping', PyJs_SourceMapGenerator_validateMapping_234_)
    @Js
    def PyJs_SourceMapGenerator_serializeMappings_237_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'SourceMapGenerator_serializeMappings':PyJs_SourceMapGenerator_serializeMappings_237_}, var)
        var.registers(['previousGeneratedColumn', 'previousOriginalLine', 'next', 'sourceIdx', 'i', 'previousName', 'previousSource', 'mappings', 'previousOriginalColumn', 'result', 'nameIdx', 'len', 'mapping', 'previousGeneratedLine'])
        var.put('previousGeneratedColumn', Js(0.0))
        var.put('previousGeneratedLine', Js(1.0))
        var.put('previousOriginalColumn', Js(0.0))
        var.put('previousOriginalLine', Js(0.0))
        var.put('previousName', Js(0.0))
        var.put('previousSource', Js(0.0))
        var.put('result', Js(''))
        pass
        pass
        pass
        pass
        var.put('mappings', var.get(u"this").get('_mappings').callprop('toArray'))
        #for JS loop
        var.put('i', Js(0.0))
        var.put('len', var.get('mappings').get('length'))
        while (var.get('i')<var.get('len')):
            try:
                var.put('mapping', var.get('mappings').get(var.get('i')))
                var.put('next', Js(''))
                if PyJsStrictNeq(var.get('mapping').get('generatedLine'),var.get('previousGeneratedLine')):
                    var.put('previousGeneratedColumn', Js(0.0))
                    while PyJsStrictNeq(var.get('mapping').get('generatedLine'),var.get('previousGeneratedLine')):
                        var.put('next', Js(';'), '+')
                        (var.put('previousGeneratedLine',Js(var.get('previousGeneratedLine').to_number())+Js(1))-Js(1))
                else:
                    if (var.get('i')>Js(0.0)):
                        if var.get('util').callprop('compareByGeneratedPositionsInflated', var.get('mapping'), var.get('mappings').get((var.get('i')-Js(1.0)))).neg():
                            continue
                        var.put('next', Js(','), '+')
                var.put('next', var.get('base64VLQ').callprop('encode', (var.get('mapping').get('generatedColumn')-var.get('previousGeneratedColumn'))), '+')
                var.put('previousGeneratedColumn', var.get('mapping').get('generatedColumn'))
                if (var.get('mapping').get('source')!=var.get(u"null")):
                    var.put('sourceIdx', var.get(u"this").get('_sources').callprop('indexOf', var.get('mapping').get('source')))
                    var.put('next', var.get('base64VLQ').callprop('encode', (var.get('sourceIdx')-var.get('previousSource'))), '+')
                    var.put('previousSource', var.get('sourceIdx'))
                    var.put('next', var.get('base64VLQ').callprop('encode', ((var.get('mapping').get('originalLine')-Js(1.0))-var.get('previousOriginalLine'))), '+')
                    var.put('previousOriginalLine', (var.get('mapping').get('originalLine')-Js(1.0)))
                    var.put('next', var.get('base64VLQ').callprop('encode', (var.get('mapping').get('originalColumn')-var.get('previousOriginalColumn'))), '+')
                    var.put('previousOriginalColumn', var.get('mapping').get('originalColumn'))
                    if (var.get('mapping').get('name')!=var.get(u"null")):
                        var.put('nameIdx', var.get(u"this").get('_names').callprop('indexOf', var.get('mapping').get('name')))
                        var.put('next', var.get('base64VLQ').callprop('encode', (var.get('nameIdx')-var.get('previousName'))), '+')
                        var.put('previousName', var.get('nameIdx'))
                var.put('result', var.get('next'), '+')
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('result')
    PyJs_SourceMapGenerator_serializeMappings_237_._set_name('SourceMapGenerator_serializeMappings')
    var.get('SourceMapGenerator').get('prototype').put('_serializeMappings', PyJs_SourceMapGenerator_serializeMappings_237_)
    @Js
    def PyJs_SourceMapGenerator_generateSourcesContent_238_(aSources, aSourceRoot, this, arguments, var=var):
        var = Scope({'aSources':aSources, 'aSourceRoot':aSourceRoot, 'this':this, 'arguments':arguments, 'SourceMapGenerator_generateSourcesContent':PyJs_SourceMapGenerator_generateSourcesContent_238_}, var)
        var.registers(['aSourceRoot', 'aSources'])
        @Js
        def PyJs_anonymous_239_(source, this, arguments, var=var):
            var = Scope({'source':source, 'this':this, 'arguments':arguments}, var)
            var.registers(['source', 'key'])
            if var.get(u"this").get('_sourcesContents').neg():
                return var.get(u"null")
            if (var.get('aSourceRoot')!=var.get(u"null")):
                var.put('source', var.get('util').callprop('relative', var.get('aSourceRoot'), var.get('source')))
            var.put('key', var.get('util').callprop('toSetString', var.get('source')))
            return (var.get(u"this").get('_sourcesContents').get(var.get('key')) if var.get('Object').get('prototype').get('hasOwnProperty').callprop('call', var.get(u"this").get('_sourcesContents'), var.get('key')) else var.get(u"null"))
        PyJs_anonymous_239_._set_name('anonymous')
        return var.get('aSources').callprop('map', PyJs_anonymous_239_, var.get(u"this"))
    PyJs_SourceMapGenerator_generateSourcesContent_238_._set_name('SourceMapGenerator_generateSourcesContent')
    var.get('SourceMapGenerator').get('prototype').put('_generateSourcesContent', PyJs_SourceMapGenerator_generateSourcesContent_238_)
    @Js
    def PyJs_SourceMapGenerator_toJSON_240_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'SourceMapGenerator_toJSON':PyJs_SourceMapGenerator_toJSON_240_}, var)
        var.registers(['map'])
        PyJs_Object_241_ = Js({'version':var.get(u"this").get('_version'),'sources':var.get(u"this").get('_sources').callprop('toArray'),'names':var.get(u"this").get('_names').callprop('toArray'),'mappings':var.get(u"this").callprop('_serializeMappings')})
        var.put('map', PyJs_Object_241_)
        if (var.get(u"this").get('_file')!=var.get(u"null")):
            var.get('map').put('file', var.get(u"this").get('_file'))
        if (var.get(u"this").get('_sourceRoot')!=var.get(u"null")):
            var.get('map').put('sourceRoot', var.get(u"this").get('_sourceRoot'))
        if var.get(u"this").get('_sourcesContents'):
            var.get('map').put('sourcesContent', var.get(u"this").callprop('_generateSourcesContent', var.get('map').get('sources'), var.get('map').get('sourceRoot')))
        return var.get('map')
    PyJs_SourceMapGenerator_toJSON_240_._set_name('SourceMapGenerator_toJSON')
    var.get('SourceMapGenerator').get('prototype').put('toJSON', PyJs_SourceMapGenerator_toJSON_240_)
    @Js
    def PyJs_SourceMapGenerator_toString_242_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'SourceMapGenerator_toString':PyJs_SourceMapGenerator_toString_242_}, var)
        var.registers([])
        return var.get('JSON').callprop('stringify', var.get(u"this").callprop('toJSON'))
    PyJs_SourceMapGenerator_toString_242_._set_name('SourceMapGenerator_toString')
    var.get('SourceMapGenerator').get('prototype').put('toString', PyJs_SourceMapGenerator_toString_242_)
    var.get('exports').put('SourceMapGenerator', var.get('SourceMapGenerator'))
PyJs_anonymous_218_._set_name('anonymous')
PyJs_Object_243_ = Js({'./array-set':Js(2.0),'./base64-vlq':Js(3.0),'./mapping-list':Js(6.0),'./util':Js(11.0)})
@Js
def PyJs_anonymous_244_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['NEWLINE_CODE', 'module', 'require', 'isSourceNode', 'SourceNode', 'exports', 'SourceMapGenerator', 'REGEX_NEWLINE', 'util'])
    @Js
    def PyJsHoisted_SourceNode_(aLine, aColumn, aSource, aChunks, aName, this, arguments, var=var):
        var = Scope({'aLine':aLine, 'aColumn':aColumn, 'aSource':aSource, 'aChunks':aChunks, 'aName':aName, 'this':this, 'arguments':arguments}, var)
        var.registers(['aName', 'aColumn', 'aLine', 'aChunks', 'aSource'])
        var.get(u"this").put('children', Js([]))
        PyJs_Object_245_ = Js({})
        var.get(u"this").put('sourceContents', PyJs_Object_245_)
        var.get(u"this").put('line', (var.get(u"null") if (var.get('aLine')==var.get(u"null")) else var.get('aLine')))
        var.get(u"this").put('column', (var.get(u"null") if (var.get('aColumn')==var.get(u"null")) else var.get('aColumn')))
        var.get(u"this").put('source', (var.get(u"null") if (var.get('aSource')==var.get(u"null")) else var.get('aSource')))
        var.get(u"this").put('name', (var.get(u"null") if (var.get('aName')==var.get(u"null")) else var.get('aName')))
        var.get(u"this").put(var.get('isSourceNode'), Js(True))
        if (var.get('aChunks')!=var.get(u"null")):
            var.get(u"this").callprop('add', var.get('aChunks'))
    PyJsHoisted_SourceNode_.func_name = 'SourceNode'
    var.put('SourceNode', PyJsHoisted_SourceNode_)
    var.put('SourceMapGenerator', var.get('require')(Js('./source-map-generator')).get('SourceMapGenerator'))
    var.put('util', var.get('require')(Js('./util')))
    var.put('REGEX_NEWLINE', JsRegExp('/(\\r?\\n)/'))
    var.put('NEWLINE_CODE', Js(10.0))
    var.put('isSourceNode', Js('$$$isSourceNode$$$'))
    pass
    @Js
    def PyJs_SourceNode_fromStringWithSourceMap_246_(aGeneratedCode, aSourceMapConsumer, aRelativePath, this, arguments, var=var):
        var = Scope({'aGeneratedCode':aGeneratedCode, 'aSourceMapConsumer':aSourceMapConsumer, 'aRelativePath':aRelativePath, 'this':this, 'arguments':arguments, 'SourceNode_fromStringWithSourceMap':PyJs_SourceNode_fromStringWithSourceMap_246_}, var)
        var.registers(['aGeneratedCode', 'aSourceMapConsumer', 'lastMapping', 'addMappingWithCode', 'node', 'remainingLinesIndex', 'lastGeneratedColumn', 'shiftNextLine', 'remainingLines', 'lastGeneratedLine', 'aRelativePath'])
        @Js
        def PyJsHoisted_addMappingWithCode_(mapping, code, this, arguments, var=var):
            var = Scope({'mapping':mapping, 'code':code, 'this':this, 'arguments':arguments}, var)
            var.registers(['code', 'source', 'mapping'])
            if (PyJsStrictEq(var.get('mapping'),var.get(u"null")) or PyJsStrictEq(var.get('mapping').get('source'),var.get('undefined'))):
                var.get('node').callprop('add', var.get('code'))
            else:
                var.put('source', (var.get('util').callprop('join', var.get('aRelativePath'), var.get('mapping').get('source')) if var.get('aRelativePath') else var.get('mapping').get('source')))
                var.get('node').callprop('add', var.get('SourceNode').create(var.get('mapping').get('originalLine'), var.get('mapping').get('originalColumn'), var.get('source'), var.get('code'), var.get('mapping').get('name')))
        PyJsHoisted_addMappingWithCode_.func_name = 'addMappingWithCode'
        var.put('addMappingWithCode', PyJsHoisted_addMappingWithCode_)
        var.put('node', var.get('SourceNode').create())
        var.put('remainingLines', var.get('aGeneratedCode').callprop('split', var.get('REGEX_NEWLINE')))
        var.put('remainingLinesIndex', Js(0.0))
        @Js
        def PyJs_shiftNextLine_247_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments, 'shiftNextLine':PyJs_shiftNextLine_247_}, var)
            var.registers(['newLine', 'lineContents', 'getNextLine'])
            @Js
            def PyJsHoisted_getNextLine_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                return (var.get('remainingLines').get((var.put('remainingLinesIndex',Js(var.get('remainingLinesIndex').to_number())+Js(1))-Js(1))) if (var.get('remainingLinesIndex')<var.get('remainingLines').get('length')) else var.get('undefined'))
            PyJsHoisted_getNextLine_.func_name = 'getNextLine'
            var.put('getNextLine', PyJsHoisted_getNextLine_)
            var.put('lineContents', var.get('getNextLine')())
            var.put('newLine', (var.get('getNextLine')() or Js('')))
            return (var.get('lineContents')+var.get('newLine'))
            pass
        PyJs_shiftNextLine_247_._set_name('shiftNextLine')
        var.put('shiftNextLine', PyJs_shiftNextLine_247_)
        var.put('lastGeneratedLine', Js(1.0))
        var.put('lastGeneratedColumn', Js(0.0))
        var.put('lastMapping', var.get(u"null"))
        @Js
        def PyJs_anonymous_248_(mapping, this, arguments, var=var):
            var = Scope({'mapping':mapping, 'this':this, 'arguments':arguments}, var)
            var.registers(['code', 'mapping', 'nextLine'])
            if PyJsStrictNeq(var.get('lastMapping'),var.get(u"null")):
                if (var.get('lastGeneratedLine')<var.get('mapping').get('generatedLine')):
                    var.get('addMappingWithCode')(var.get('lastMapping'), var.get('shiftNextLine')())
                    (var.put('lastGeneratedLine',Js(var.get('lastGeneratedLine').to_number())+Js(1))-Js(1))
                    var.put('lastGeneratedColumn', Js(0.0))
                else:
                    var.put('nextLine', (var.get('remainingLines').get(var.get('remainingLinesIndex')) or Js('')))
                    var.put('code', var.get('nextLine').callprop('substr', Js(0.0), (var.get('mapping').get('generatedColumn')-var.get('lastGeneratedColumn'))))
                    var.get('remainingLines').put(var.get('remainingLinesIndex'), var.get('nextLine').callprop('substr', (var.get('mapping').get('generatedColumn')-var.get('lastGeneratedColumn'))))
                    var.put('lastGeneratedColumn', var.get('mapping').get('generatedColumn'))
                    var.get('addMappingWithCode')(var.get('lastMapping'), var.get('code'))
                    var.put('lastMapping', var.get('mapping'))
                    return var.get('undefined')
            while (var.get('lastGeneratedLine')<var.get('mapping').get('generatedLine')):
                var.get('node').callprop('add', var.get('shiftNextLine')())
                (var.put('lastGeneratedLine',Js(var.get('lastGeneratedLine').to_number())+Js(1))-Js(1))
            if (var.get('lastGeneratedColumn')<var.get('mapping').get('generatedColumn')):
                var.put('nextLine', (var.get('remainingLines').get(var.get('remainingLinesIndex')) or Js('')))
                var.get('node').callprop('add', var.get('nextLine').callprop('substr', Js(0.0), var.get('mapping').get('generatedColumn')))
                var.get('remainingLines').put(var.get('remainingLinesIndex'), var.get('nextLine').callprop('substr', var.get('mapping').get('generatedColumn')))
                var.put('lastGeneratedColumn', var.get('mapping').get('generatedColumn'))
            var.put('lastMapping', var.get('mapping'))
        PyJs_anonymous_248_._set_name('anonymous')
        var.get('aSourceMapConsumer').callprop('eachMapping', PyJs_anonymous_248_, var.get(u"this"))
        if (var.get('remainingLinesIndex')<var.get('remainingLines').get('length')):
            if var.get('lastMapping'):
                var.get('addMappingWithCode')(var.get('lastMapping'), var.get('shiftNextLine')())
            var.get('node').callprop('add', var.get('remainingLines').callprop('splice', var.get('remainingLinesIndex')).callprop('join', Js('')))
        @Js
        def PyJs_anonymous_249_(sourceFile, this, arguments, var=var):
            var = Scope({'sourceFile':sourceFile, 'this':this, 'arguments':arguments}, var)
            var.registers(['content', 'sourceFile'])
            var.put('content', var.get('aSourceMapConsumer').callprop('sourceContentFor', var.get('sourceFile')))
            if (var.get('content')!=var.get(u"null")):
                if (var.get('aRelativePath')!=var.get(u"null")):
                    var.put('sourceFile', var.get('util').callprop('join', var.get('aRelativePath'), var.get('sourceFile')))
                var.get('node').callprop('setSourceContent', var.get('sourceFile'), var.get('content'))
        PyJs_anonymous_249_._set_name('anonymous')
        var.get('aSourceMapConsumer').get('sources').callprop('forEach', PyJs_anonymous_249_)
        return var.get('node')
        pass
    PyJs_SourceNode_fromStringWithSourceMap_246_._set_name('SourceNode_fromStringWithSourceMap')
    var.get('SourceNode').put('fromStringWithSourceMap', PyJs_SourceNode_fromStringWithSourceMap_246_)
    @Js
    def PyJs_SourceNode_add_250_(aChunk, this, arguments, var=var):
        var = Scope({'aChunk':aChunk, 'this':this, 'arguments':arguments, 'SourceNode_add':PyJs_SourceNode_add_250_}, var)
        var.registers(['aChunk'])
        if var.get('Array').callprop('isArray', var.get('aChunk')):
            @Js
            def PyJs_anonymous_251_(chunk, this, arguments, var=var):
                var = Scope({'chunk':chunk, 'this':this, 'arguments':arguments}, var)
                var.registers(['chunk'])
                var.get(u"this").callprop('add', var.get('chunk'))
            PyJs_anonymous_251_._set_name('anonymous')
            var.get('aChunk').callprop('forEach', PyJs_anonymous_251_, var.get(u"this"))
        else:
            if (var.get('aChunk').get(var.get('isSourceNode')) or PyJsStrictEq(var.get('aChunk',throw=False).typeof(),Js('string'))):
                if var.get('aChunk'):
                    var.get(u"this").get('children').callprop('push', var.get('aChunk'))
            else:
                PyJsTempException = JsToPyException(var.get('TypeError').create((Js('Expected a SourceNode, string, or an array of SourceNodes and strings. Got ')+var.get('aChunk'))))
                raise PyJsTempException
        return var.get(u"this")
    PyJs_SourceNode_add_250_._set_name('SourceNode_add')
    var.get('SourceNode').get('prototype').put('add', PyJs_SourceNode_add_250_)
    @Js
    def PyJs_SourceNode_prepend_252_(aChunk, this, arguments, var=var):
        var = Scope({'aChunk':aChunk, 'this':this, 'arguments':arguments, 'SourceNode_prepend':PyJs_SourceNode_prepend_252_}, var)
        var.registers(['i', 'aChunk'])
        if var.get('Array').callprop('isArray', var.get('aChunk')):
            #for JS loop
            var.put('i', (var.get('aChunk').get('length')-Js(1.0)))
            while (var.get('i')>=Js(0.0)):
                try:
                    var.get(u"this").callprop('prepend', var.get('aChunk').get(var.get('i')))
                finally:
                        (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1))
        else:
            if (var.get('aChunk').get(var.get('isSourceNode')) or PyJsStrictEq(var.get('aChunk',throw=False).typeof(),Js('string'))):
                var.get(u"this").get('children').callprop('unshift', var.get('aChunk'))
            else:
                PyJsTempException = JsToPyException(var.get('TypeError').create((Js('Expected a SourceNode, string, or an array of SourceNodes and strings. Got ')+var.get('aChunk'))))
                raise PyJsTempException
        return var.get(u"this")
    PyJs_SourceNode_prepend_252_._set_name('SourceNode_prepend')
    var.get('SourceNode').get('prototype').put('prepend', PyJs_SourceNode_prepend_252_)
    @Js
    def PyJs_SourceNode_walk_253_(aFn, this, arguments, var=var):
        var = Scope({'aFn':aFn, 'this':this, 'arguments':arguments, 'SourceNode_walk':PyJs_SourceNode_walk_253_}, var)
        var.registers(['aFn', 'i', 'chunk', 'len'])
        pass
        #for JS loop
        var.put('i', Js(0.0))
        var.put('len', var.get(u"this").get('children').get('length'))
        while (var.get('i')<var.get('len')):
            try:
                var.put('chunk', var.get(u"this").get('children').get(var.get('i')))
                if var.get('chunk').get(var.get('isSourceNode')):
                    var.get('chunk').callprop('walk', var.get('aFn'))
                else:
                    if PyJsStrictNeq(var.get('chunk'),Js('')):
                        PyJs_Object_254_ = Js({'source':var.get(u"this").get('source'),'line':var.get(u"this").get('line'),'column':var.get(u"this").get('column'),'name':var.get(u"this").get('name')})
                        var.get('aFn')(var.get('chunk'), PyJs_Object_254_)
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
    PyJs_SourceNode_walk_253_._set_name('SourceNode_walk')
    var.get('SourceNode').get('prototype').put('walk', PyJs_SourceNode_walk_253_)
    @Js
    def PyJs_SourceNode_join_255_(aSep, this, arguments, var=var):
        var = Scope({'aSep':aSep, 'this':this, 'arguments':arguments, 'SourceNode_join':PyJs_SourceNode_join_255_}, var)
        var.registers(['aSep', 'newChildren', 'i', 'len'])
        pass
        pass
        var.put('len', var.get(u"this").get('children').get('length'))
        if (var.get('len')>Js(0.0)):
            var.put('newChildren', Js([]))
            #for JS loop
            var.put('i', Js(0.0))
            while (var.get('i')<(var.get('len')-Js(1.0))):
                try:
                    var.get('newChildren').callprop('push', var.get(u"this").get('children').get(var.get('i')))
                    var.get('newChildren').callprop('push', var.get('aSep'))
                finally:
                        (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
            var.get('newChildren').callprop('push', var.get(u"this").get('children').get(var.get('i')))
            var.get(u"this").put('children', var.get('newChildren'))
        return var.get(u"this")
    PyJs_SourceNode_join_255_._set_name('SourceNode_join')
    var.get('SourceNode').get('prototype').put('join', PyJs_SourceNode_join_255_)
    @Js
    def PyJs_SourceNode_replaceRight_256_(aPattern, aReplacement, this, arguments, var=var):
        var = Scope({'aPattern':aPattern, 'aReplacement':aReplacement, 'this':this, 'arguments':arguments, 'SourceNode_replaceRight':PyJs_SourceNode_replaceRight_256_}, var)
        var.registers(['aReplacement', 'lastChild', 'aPattern'])
        var.put('lastChild', var.get(u"this").get('children').get((var.get(u"this").get('children').get('length')-Js(1.0))))
        if var.get('lastChild').get(var.get('isSourceNode')):
            var.get('lastChild').callprop('replaceRight', var.get('aPattern'), var.get('aReplacement'))
        else:
            if PyJsStrictEq(var.get('lastChild',throw=False).typeof(),Js('string')):
                var.get(u"this").get('children').put((var.get(u"this").get('children').get('length')-Js(1.0)), var.get('lastChild').callprop('replace', var.get('aPattern'), var.get('aReplacement')))
            else:
                var.get(u"this").get('children').callprop('push', Js('').callprop('replace', var.get('aPattern'), var.get('aReplacement')))
        return var.get(u"this")
    PyJs_SourceNode_replaceRight_256_._set_name('SourceNode_replaceRight')
    var.get('SourceNode').get('prototype').put('replaceRight', PyJs_SourceNode_replaceRight_256_)
    @Js
    def PyJs_SourceNode_setSourceContent_257_(aSourceFile, aSourceContent, this, arguments, var=var):
        var = Scope({'aSourceFile':aSourceFile, 'aSourceContent':aSourceContent, 'this':this, 'arguments':arguments, 'SourceNode_setSourceContent':PyJs_SourceNode_setSourceContent_257_}, var)
        var.registers(['aSourceContent', 'aSourceFile'])
        var.get(u"this").get('sourceContents').put(var.get('util').callprop('toSetString', var.get('aSourceFile')), var.get('aSourceContent'))
    PyJs_SourceNode_setSourceContent_257_._set_name('SourceNode_setSourceContent')
    var.get('SourceNode').get('prototype').put('setSourceContent', PyJs_SourceNode_setSourceContent_257_)
    @Js
    def PyJs_SourceNode_walkSourceContents_258_(aFn, this, arguments, var=var):
        var = Scope({'aFn':aFn, 'this':this, 'arguments':arguments, 'SourceNode_walkSourceContents':PyJs_SourceNode_walkSourceContents_258_}, var)
        var.registers(['aFn', 'i', 'sources', 'len'])
        #for JS loop
        var.put('i', Js(0.0))
        var.put('len', var.get(u"this").get('children').get('length'))
        while (var.get('i')<var.get('len')):
            try:
                if var.get(u"this").get('children').get(var.get('i')).get(var.get('isSourceNode')):
                    var.get(u"this").get('children').get(var.get('i')).callprop('walkSourceContents', var.get('aFn'))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        var.put('sources', var.get('Object').callprop('keys', var.get(u"this").get('sourceContents')))
        #for JS loop
        var.put('i', Js(0.0))
        var.put('len', var.get('sources').get('length'))
        while (var.get('i')<var.get('len')):
            try:
                var.get('aFn')(var.get('util').callprop('fromSetString', var.get('sources').get(var.get('i'))), var.get(u"this").get('sourceContents').get(var.get('sources').get(var.get('i'))))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
    PyJs_SourceNode_walkSourceContents_258_._set_name('SourceNode_walkSourceContents')
    var.get('SourceNode').get('prototype').put('walkSourceContents', PyJs_SourceNode_walkSourceContents_258_)
    @Js
    def PyJs_SourceNode_toString_259_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments, 'SourceNode_toString':PyJs_SourceNode_toString_259_}, var)
        var.registers(['str'])
        var.put('str', Js(''))
        @Js
        def PyJs_anonymous_260_(chunk, this, arguments, var=var):
            var = Scope({'chunk':chunk, 'this':this, 'arguments':arguments}, var)
            var.registers(['chunk'])
            var.put('str', var.get('chunk'), '+')
        PyJs_anonymous_260_._set_name('anonymous')
        var.get(u"this").callprop('walk', PyJs_anonymous_260_)
        return var.get('str')
    PyJs_SourceNode_toString_259_._set_name('SourceNode_toString')
    var.get('SourceNode').get('prototype').put('toString', PyJs_SourceNode_toString_259_)
    @Js
    def PyJs_SourceNode_toStringWithSourceMap_261_(aArgs, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'this':this, 'arguments':arguments, 'SourceNode_toStringWithSourceMap':PyJs_SourceNode_toStringWithSourceMap_261_}, var)
        var.registers(['aArgs', 'lastOriginalSource', 'generated', 'lastOriginalLine', 'lastOriginalColumn', 'lastOriginalName', 'sourceMappingActive', 'map'])
        PyJs_Object_262_ = Js({'code':Js(''),'line':Js(1.0),'column':Js(0.0)})
        var.put('generated', PyJs_Object_262_)
        var.put('map', var.get('SourceMapGenerator').create(var.get('aArgs')))
        var.put('sourceMappingActive', Js(False))
        var.put('lastOriginalSource', var.get(u"null"))
        var.put('lastOriginalLine', var.get(u"null"))
        var.put('lastOriginalColumn', var.get(u"null"))
        var.put('lastOriginalName', var.get(u"null"))
        @Js
        def PyJs_anonymous_263_(chunk, original, this, arguments, var=var):
            var = Scope({'chunk':chunk, 'original':original, 'this':this, 'arguments':arguments}, var)
            var.registers(['original', 'chunk', 'length', 'idx'])
            var.get('generated').put('code', var.get('chunk'), '+')
            if ((PyJsStrictNeq(var.get('original').get('source'),var.get(u"null")) and PyJsStrictNeq(var.get('original').get('line'),var.get(u"null"))) and PyJsStrictNeq(var.get('original').get('column'),var.get(u"null"))):
                if (((PyJsStrictNeq(var.get('lastOriginalSource'),var.get('original').get('source')) or PyJsStrictNeq(var.get('lastOriginalLine'),var.get('original').get('line'))) or PyJsStrictNeq(var.get('lastOriginalColumn'),var.get('original').get('column'))) or PyJsStrictNeq(var.get('lastOriginalName'),var.get('original').get('name'))):
                    PyJs_Object_265_ = Js({'line':var.get('original').get('line'),'column':var.get('original').get('column')})
                    PyJs_Object_266_ = Js({'line':var.get('generated').get('line'),'column':var.get('generated').get('column')})
                    PyJs_Object_264_ = Js({'source':var.get('original').get('source'),'original':PyJs_Object_265_,'generated':PyJs_Object_266_,'name':var.get('original').get('name')})
                    var.get('map').callprop('addMapping', PyJs_Object_264_)
                var.put('lastOriginalSource', var.get('original').get('source'))
                var.put('lastOriginalLine', var.get('original').get('line'))
                var.put('lastOriginalColumn', var.get('original').get('column'))
                var.put('lastOriginalName', var.get('original').get('name'))
                var.put('sourceMappingActive', Js(True))
            else:
                if var.get('sourceMappingActive'):
                    PyJs_Object_268_ = Js({'line':var.get('generated').get('line'),'column':var.get('generated').get('column')})
                    PyJs_Object_267_ = Js({'generated':PyJs_Object_268_})
                    var.get('map').callprop('addMapping', PyJs_Object_267_)
                    var.put('lastOriginalSource', var.get(u"null"))
                    var.put('sourceMappingActive', Js(False))
            #for JS loop
            var.put('idx', Js(0.0))
            var.put('length', var.get('chunk').get('length'))
            while (var.get('idx')<var.get('length')):
                try:
                    if PyJsStrictEq(var.get('chunk').callprop('charCodeAt', var.get('idx')),var.get('NEWLINE_CODE')):
                        (var.get('generated').put('line',Js(var.get('generated').get('line').to_number())+Js(1))-Js(1))
                        var.get('generated').put('column', Js(0.0))
                        if PyJsStrictEq((var.get('idx')+Js(1.0)),var.get('length')):
                            var.put('lastOriginalSource', var.get(u"null"))
                            var.put('sourceMappingActive', Js(False))
                        else:
                            if var.get('sourceMappingActive'):
                                PyJs_Object_270_ = Js({'line':var.get('original').get('line'),'column':var.get('original').get('column')})
                                PyJs_Object_271_ = Js({'line':var.get('generated').get('line'),'column':var.get('generated').get('column')})
                                PyJs_Object_269_ = Js({'source':var.get('original').get('source'),'original':PyJs_Object_270_,'generated':PyJs_Object_271_,'name':var.get('original').get('name')})
                                var.get('map').callprop('addMapping', PyJs_Object_269_)
                    else:
                        (var.get('generated').put('column',Js(var.get('generated').get('column').to_number())+Js(1))-Js(1))
                finally:
                        (var.put('idx',Js(var.get('idx').to_number())+Js(1))-Js(1))
        PyJs_anonymous_263_._set_name('anonymous')
        var.get(u"this").callprop('walk', PyJs_anonymous_263_)
        @Js
        def PyJs_anonymous_272_(sourceFile, sourceContent, this, arguments, var=var):
            var = Scope({'sourceFile':sourceFile, 'sourceContent':sourceContent, 'this':this, 'arguments':arguments}, var)
            var.registers(['sourceContent', 'sourceFile'])
            var.get('map').callprop('setSourceContent', var.get('sourceFile'), var.get('sourceContent'))
        PyJs_anonymous_272_._set_name('anonymous')
        var.get(u"this").callprop('walkSourceContents', PyJs_anonymous_272_)
        PyJs_Object_273_ = Js({'code':var.get('generated').get('code'),'map':var.get('map')})
        return PyJs_Object_273_
    PyJs_SourceNode_toStringWithSourceMap_261_._set_name('SourceNode_toStringWithSourceMap')
    var.get('SourceNode').get('prototype').put('toStringWithSourceMap', PyJs_SourceNode_toStringWithSourceMap_261_)
    var.get('exports').put('SourceNode', var.get('SourceNode'))
PyJs_anonymous_244_._set_name('anonymous')
PyJs_Object_274_ = Js({'./source-map-generator':Js(9.0),'./util':Js(11.0)})
@Js
def PyJs_anonymous_275_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['require', 'compareByGeneratedPositionsDeflated', 'compareByOriginalPositions', 'module', 'toSetString', 'strcmp', 'urlParse', 'urlRegexp', 'relative', 'fromSetString', 'parseSourceMapInput', 'urlGenerate', 'isProtoString', 'supportsNullProto', 'dataUrlRegexp', 'compareByGeneratedPositionsInflated', 'join', 'computeSourceURL', 'getArg', 'exports', 'identity', 'normalize'])
    @Js
    def PyJsHoisted_getArg_(aArgs, aName, aDefaultValue, this, arguments, var=var):
        var = Scope({'aArgs':aArgs, 'aName':aName, 'aDefaultValue':aDefaultValue, 'this':this, 'arguments':arguments}, var)
        var.registers(['aDefaultValue', 'aArgs', 'aName'])
        if var.get('aArgs').contains(var.get('aName')):
            return var.get('aArgs').get(var.get('aName'))
        else:
            if PyJsStrictEq(var.get('arguments').get('length'),Js(3.0)):
                return var.get('aDefaultValue')
            else:
                PyJsTempException = JsToPyException(var.get('Error').create(((Js('"')+var.get('aName'))+Js('" is a required argument.'))))
                raise PyJsTempException
    PyJsHoisted_getArg_.func_name = 'getArg'
    var.put('getArg', PyJsHoisted_getArg_)
    @Js
    def PyJsHoisted_urlParse_(aUrl, this, arguments, var=var):
        var = Scope({'aUrl':aUrl, 'this':this, 'arguments':arguments}, var)
        var.registers(['aUrl', 'match'])
        var.put('match', var.get('aUrl').callprop('match', var.get('urlRegexp')))
        if var.get('match').neg():
            return var.get(u"null")
        PyJs_Object_276_ = Js({'scheme':var.get('match').get('1'),'auth':var.get('match').get('2'),'host':var.get('match').get('3'),'port':var.get('match').get('4'),'path':var.get('match').get('5')})
        return PyJs_Object_276_
    PyJsHoisted_urlParse_.func_name = 'urlParse'
    var.put('urlParse', PyJsHoisted_urlParse_)
    @Js
    def PyJsHoisted_urlGenerate_(aParsedUrl, this, arguments, var=var):
        var = Scope({'aParsedUrl':aParsedUrl, 'this':this, 'arguments':arguments}, var)
        var.registers(['url', 'aParsedUrl'])
        var.put('url', Js(''))
        if var.get('aParsedUrl').get('scheme'):
            var.put('url', (var.get('aParsedUrl').get('scheme')+Js(':')), '+')
        var.put('url', Js('//'), '+')
        if var.get('aParsedUrl').get('auth'):
            var.put('url', (var.get('aParsedUrl').get('auth')+Js('@')), '+')
        if var.get('aParsedUrl').get('host'):
            var.put('url', var.get('aParsedUrl').get('host'), '+')
        if var.get('aParsedUrl').get('port'):
            var.put('url', (Js(':')+var.get('aParsedUrl').get('port')), '+')
        if var.get('aParsedUrl').get('path'):
            var.put('url', var.get('aParsedUrl').get('path'), '+')
        return var.get('url')
    PyJsHoisted_urlGenerate_.func_name = 'urlGenerate'
    var.put('urlGenerate', PyJsHoisted_urlGenerate_)
    @Js
    def PyJsHoisted_normalize_(aPath, this, arguments, var=var):
        var = Scope({'aPath':aPath, 'this':this, 'arguments':arguments}, var)
        var.registers(['parts', 'part', 'isAbsolute', 'i', 'path', 'aPath', 'up', 'url'])
        var.put('path', var.get('aPath'))
        var.put('url', var.get('urlParse')(var.get('aPath')))
        if var.get('url'):
            if var.get('url').get('path').neg():
                return var.get('aPath')
            var.put('path', var.get('url').get('path'))
        var.put('isAbsolute', var.get('exports').callprop('isAbsolute', var.get('path')))
        var.put('parts', var.get('path').callprop('split', JsRegExp('/\\/+/')))
        #for JS loop
        var.put('up', Js(0.0))
        var.put('i', (var.get('parts').get('length')-Js(1.0)))
        while (var.get('i')>=Js(0.0)):
            try:
                var.put('part', var.get('parts').get(var.get('i')))
                if PyJsStrictEq(var.get('part'),Js('.')):
                    var.get('parts').callprop('splice', var.get('i'), Js(1.0))
                else:
                    if PyJsStrictEq(var.get('part'),Js('..')):
                        (var.put('up',Js(var.get('up').to_number())+Js(1))-Js(1))
                    else:
                        if (var.get('up')>Js(0.0)):
                            if PyJsStrictEq(var.get('part'),Js('')):
                                var.get('parts').callprop('splice', (var.get('i')+Js(1.0)), var.get('up'))
                                var.put('up', Js(0.0))
                            else:
                                var.get('parts').callprop('splice', var.get('i'), Js(2.0))
                                (var.put('up',Js(var.get('up').to_number())-Js(1))+Js(1))
            finally:
                    (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1))
        var.put('path', var.get('parts').callprop('join', Js('/')))
        if PyJsStrictEq(var.get('path'),Js('')):
            var.put('path', (Js('/') if var.get('isAbsolute') else Js('.')))
        if var.get('url'):
            var.get('url').put('path', var.get('path'))
            return var.get('urlGenerate')(var.get('url'))
        return var.get('path')
    PyJsHoisted_normalize_.func_name = 'normalize'
    var.put('normalize', PyJsHoisted_normalize_)
    @Js
    def PyJsHoisted_join_(aRoot, aPath, this, arguments, var=var):
        var = Scope({'aRoot':aRoot, 'aPath':aPath, 'this':this, 'arguments':arguments}, var)
        var.registers(['aRootUrl', 'aPathUrl', 'aPath', 'aRoot', 'joined'])
        if PyJsStrictEq(var.get('aRoot'),Js('')):
            var.put('aRoot', Js('.'))
        if PyJsStrictEq(var.get('aPath'),Js('')):
            var.put('aPath', Js('.'))
        var.put('aPathUrl', var.get('urlParse')(var.get('aPath')))
        var.put('aRootUrl', var.get('urlParse')(var.get('aRoot')))
        if var.get('aRootUrl'):
            var.put('aRoot', (var.get('aRootUrl').get('path') or Js('/')))
        if (var.get('aPathUrl') and var.get('aPathUrl').get('scheme').neg()):
            if var.get('aRootUrl'):
                var.get('aPathUrl').put('scheme', var.get('aRootUrl').get('scheme'))
            return var.get('urlGenerate')(var.get('aPathUrl'))
        if (var.get('aPathUrl') or var.get('aPath').callprop('match', var.get('dataUrlRegexp'))):
            return var.get('aPath')
        if ((var.get('aRootUrl') and var.get('aRootUrl').get('host').neg()) and var.get('aRootUrl').get('path').neg()):
            var.get('aRootUrl').put('host', var.get('aPath'))
            return var.get('urlGenerate')(var.get('aRootUrl'))
        var.put('joined', (var.get('aPath') if PyJsStrictEq(var.get('aPath').callprop('charAt', Js(0.0)),Js('/')) else var.get('normalize')(((var.get('aRoot').callprop('replace', JsRegExp('/\\/+$/'), Js(''))+Js('/'))+var.get('aPath')))))
        if var.get('aRootUrl'):
            var.get('aRootUrl').put('path', var.get('joined'))
            return var.get('urlGenerate')(var.get('aRootUrl'))
        return var.get('joined')
    PyJsHoisted_join_.func_name = 'join'
    var.put('join', PyJsHoisted_join_)
    @Js
    def PyJsHoisted_relative_(aRoot, aPath, this, arguments, var=var):
        var = Scope({'aRoot':aRoot, 'aPath':aPath, 'this':this, 'arguments':arguments}, var)
        var.registers(['index', 'aRoot', 'level', 'aPath'])
        if PyJsStrictEq(var.get('aRoot'),Js('')):
            var.put('aRoot', Js('.'))
        var.put('aRoot', var.get('aRoot').callprop('replace', JsRegExp('/\\/$/'), Js('')))
        var.put('level', Js(0.0))
        while PyJsStrictNeq(var.get('aPath').callprop('indexOf', (var.get('aRoot')+Js('/'))),Js(0.0)):
            var.put('index', var.get('aRoot').callprop('lastIndexOf', Js('/')))
            if (var.get('index')<Js(0.0)):
                return var.get('aPath')
            var.put('aRoot', var.get('aRoot').callprop('slice', Js(0.0), var.get('index')))
            if var.get('aRoot').callprop('match', JsRegExp('/^([^\\/]+:\\/)?\\/*$/')):
                return var.get('aPath')
            var.put('level',Js(var.get('level').to_number())+Js(1))
        return (var.get('Array')((var.get('level')+Js(1.0))).callprop('join', Js('../'))+var.get('aPath').callprop('substr', (var.get('aRoot').get('length')+Js(1.0))))
    PyJsHoisted_relative_.func_name = 'relative'
    var.put('relative', PyJsHoisted_relative_)
    @Js
    def PyJsHoisted_identity_(s, this, arguments, var=var):
        var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
        var.registers(['s'])
        return var.get('s')
    PyJsHoisted_identity_.func_name = 'identity'
    var.put('identity', PyJsHoisted_identity_)
    @Js
    def PyJsHoisted_toSetString_(aStr, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'this':this, 'arguments':arguments}, var)
        var.registers(['aStr'])
        if var.get('isProtoString')(var.get('aStr')):
            return (Js('$')+var.get('aStr'))
        return var.get('aStr')
    PyJsHoisted_toSetString_.func_name = 'toSetString'
    var.put('toSetString', PyJsHoisted_toSetString_)
    @Js
    def PyJsHoisted_fromSetString_(aStr, this, arguments, var=var):
        var = Scope({'aStr':aStr, 'this':this, 'arguments':arguments}, var)
        var.registers(['aStr'])
        if var.get('isProtoString')(var.get('aStr')):
            return var.get('aStr').callprop('slice', Js(1.0))
        return var.get('aStr')
    PyJsHoisted_fromSetString_.func_name = 'fromSetString'
    var.put('fromSetString', PyJsHoisted_fromSetString_)
    @Js
    def PyJsHoisted_isProtoString_(s, this, arguments, var=var):
        var = Scope({'s':s, 'this':this, 'arguments':arguments}, var)
        var.registers(['s', 'i', 'length'])
        if var.get('s').neg():
            return Js(False)
        var.put('length', var.get('s').get('length'))
        if (var.get('length')<Js(9.0)):
            return Js(False)
        def PyJs_LONG_279_(var=var):
            return ((((PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(1.0))),Js(95.0)) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(2.0))),Js(95.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(3.0))),Js(111.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(4.0))),Js(116.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(5.0))),Js(111.0)))
        if ((((PyJs_LONG_279_() or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(6.0))),Js(114.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(7.0))),Js(112.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(8.0))),Js(95.0))) or PyJsStrictNeq(var.get('s').callprop('charCodeAt', (var.get('length')-Js(9.0))),Js(95.0))):
            return Js(False)
        #for JS loop
        var.put('i', (var.get('length')-Js(10.0)))
        while (var.get('i')>=Js(0.0)):
            try:
                if PyJsStrictNeq(var.get('s').callprop('charCodeAt', var.get('i')),Js(36.0)):
                    return Js(False)
            finally:
                    (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1))
        return Js(True)
    PyJsHoisted_isProtoString_.func_name = 'isProtoString'
    var.put('isProtoString', PyJsHoisted_isProtoString_)
    @Js
    def PyJsHoisted_compareByOriginalPositions_(mappingA, mappingB, onlyCompareOriginal, this, arguments, var=var):
        var = Scope({'mappingA':mappingA, 'mappingB':mappingB, 'onlyCompareOriginal':onlyCompareOriginal, 'this':this, 'arguments':arguments}, var)
        var.registers(['mappingA', 'mappingB', 'onlyCompareOriginal', 'cmp'])
        var.put('cmp', var.get('strcmp')(var.get('mappingA').get('source'), var.get('mappingB').get('source')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalLine')-var.get('mappingB').get('originalLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalColumn')-var.get('mappingB').get('originalColumn')))
        if (PyJsStrictNeq(var.get('cmp'),Js(0.0)) or var.get('onlyCompareOriginal')):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('generatedColumn')-var.get('mappingB').get('generatedColumn')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('generatedLine')-var.get('mappingB').get('generatedLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        return var.get('strcmp')(var.get('mappingA').get('name'), var.get('mappingB').get('name'))
    PyJsHoisted_compareByOriginalPositions_.func_name = 'compareByOriginalPositions'
    var.put('compareByOriginalPositions', PyJsHoisted_compareByOriginalPositions_)
    @Js
    def PyJsHoisted_compareByGeneratedPositionsDeflated_(mappingA, mappingB, onlyCompareGenerated, this, arguments, var=var):
        var = Scope({'mappingA':mappingA, 'mappingB':mappingB, 'onlyCompareGenerated':onlyCompareGenerated, 'this':this, 'arguments':arguments}, var)
        var.registers(['mappingA', 'mappingB', 'cmp', 'onlyCompareGenerated'])
        var.put('cmp', (var.get('mappingA').get('generatedLine')-var.get('mappingB').get('generatedLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('generatedColumn')-var.get('mappingB').get('generatedColumn')))
        if (PyJsStrictNeq(var.get('cmp'),Js(0.0)) or var.get('onlyCompareGenerated')):
            return var.get('cmp')
        var.put('cmp', var.get('strcmp')(var.get('mappingA').get('source'), var.get('mappingB').get('source')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalLine')-var.get('mappingB').get('originalLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalColumn')-var.get('mappingB').get('originalColumn')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        return var.get('strcmp')(var.get('mappingA').get('name'), var.get('mappingB').get('name'))
    PyJsHoisted_compareByGeneratedPositionsDeflated_.func_name = 'compareByGeneratedPositionsDeflated'
    var.put('compareByGeneratedPositionsDeflated', PyJsHoisted_compareByGeneratedPositionsDeflated_)
    @Js
    def PyJsHoisted_strcmp_(aStr1, aStr2, this, arguments, var=var):
        var = Scope({'aStr1':aStr1, 'aStr2':aStr2, 'this':this, 'arguments':arguments}, var)
        var.registers(['aStr2', 'aStr1'])
        if PyJsStrictEq(var.get('aStr1'),var.get('aStr2')):
            return Js(0.0)
        if PyJsStrictEq(var.get('aStr1'),var.get(u"null")):
            return Js(1.0)
        if PyJsStrictEq(var.get('aStr2'),var.get(u"null")):
            return (-Js(1.0))
        if (var.get('aStr1')>var.get('aStr2')):
            return Js(1.0)
        return (-Js(1.0))
    PyJsHoisted_strcmp_.func_name = 'strcmp'
    var.put('strcmp', PyJsHoisted_strcmp_)
    @Js
    def PyJsHoisted_compareByGeneratedPositionsInflated_(mappingA, mappingB, this, arguments, var=var):
        var = Scope({'mappingA':mappingA, 'mappingB':mappingB, 'this':this, 'arguments':arguments}, var)
        var.registers(['mappingA', 'mappingB', 'cmp'])
        var.put('cmp', (var.get('mappingA').get('generatedLine')-var.get('mappingB').get('generatedLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('generatedColumn')-var.get('mappingB').get('generatedColumn')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', var.get('strcmp')(var.get('mappingA').get('source'), var.get('mappingB').get('source')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalLine')-var.get('mappingB').get('originalLine')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        var.put('cmp', (var.get('mappingA').get('originalColumn')-var.get('mappingB').get('originalColumn')))
        if PyJsStrictNeq(var.get('cmp'),Js(0.0)):
            return var.get('cmp')
        return var.get('strcmp')(var.get('mappingA').get('name'), var.get('mappingB').get('name'))
    PyJsHoisted_compareByGeneratedPositionsInflated_.func_name = 'compareByGeneratedPositionsInflated'
    var.put('compareByGeneratedPositionsInflated', PyJsHoisted_compareByGeneratedPositionsInflated_)
    @Js
    def PyJsHoisted_parseSourceMapInput_(str, this, arguments, var=var):
        var = Scope({'str':str, 'this':this, 'arguments':arguments}, var)
        var.registers(['str'])
        return var.get('JSON').callprop('parse', var.get('str').callprop('replace', JsRegExp("/^\\)]}'[^\\n]*\\n/"), Js('')))
    PyJsHoisted_parseSourceMapInput_.func_name = 'parseSourceMapInput'
    var.put('parseSourceMapInput', PyJsHoisted_parseSourceMapInput_)
    @Js
    def PyJsHoisted_computeSourceURL_(sourceRoot, sourceURL, sourceMapURL, this, arguments, var=var):
        var = Scope({'sourceRoot':sourceRoot, 'sourceURL':sourceURL, 'sourceMapURL':sourceMapURL, 'this':this, 'arguments':arguments}, var)
        var.registers(['sourceMapURL', 'sourceRoot', 'parsed', 'index', 'sourceURL'])
        var.put('sourceURL', (var.get('sourceURL') or Js('')))
        if var.get('sourceRoot'):
            if (PyJsStrictNeq(var.get('sourceRoot').get((var.get('sourceRoot').get('length')-Js(1.0))),Js('/')) and PyJsStrictNeq(var.get('sourceURL').get('0'),Js('/'))):
                var.put('sourceRoot', Js('/'), '+')
            var.put('sourceURL', (var.get('sourceRoot')+var.get('sourceURL')))
        if var.get('sourceMapURL'):
            var.put('parsed', var.get('urlParse')(var.get('sourceMapURL')))
            if var.get('parsed').neg():
                PyJsTempException = JsToPyException(var.get('Error').create(Js('sourceMapURL could not be parsed')))
                raise PyJsTempException
            if var.get('parsed').get('path'):
                var.put('index', var.get('parsed').get('path').callprop('lastIndexOf', Js('/')))
                if (var.get('index')>=Js(0.0)):
                    var.get('parsed').put('path', var.get('parsed').get('path').callprop('substring', Js(0.0), (var.get('index')+Js(1.0))))
            var.put('sourceURL', var.get('join')(var.get('urlGenerate')(var.get('parsed')), var.get('sourceURL')))
        return var.get('normalize')(var.get('sourceURL'))
    PyJsHoisted_computeSourceURL_.func_name = 'computeSourceURL'
    var.put('computeSourceURL', PyJsHoisted_computeSourceURL_)
    pass
    var.get('exports').put('getArg', var.get('getArg'))
    var.put('urlRegexp', JsRegExp('/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/'))
    var.put('dataUrlRegexp', JsRegExp('/^data:.+\\,.+$/'))
    pass
    var.get('exports').put('urlParse', var.get('urlParse'))
    pass
    var.get('exports').put('urlGenerate', var.get('urlGenerate'))
    pass
    var.get('exports').put('normalize', var.get('normalize'))
    pass
    var.get('exports').put('join', var.get('join'))
    @Js
    def PyJs_anonymous_277_(aPath, this, arguments, var=var):
        var = Scope({'aPath':aPath, 'this':this, 'arguments':arguments}, var)
        var.registers(['aPath'])
        return (PyJsStrictEq(var.get('aPath').callprop('charAt', Js(0.0)),Js('/')) or var.get('urlRegexp').callprop('test', var.get('aPath')))
    PyJs_anonymous_277_._set_name('anonymous')
    var.get('exports').put('isAbsolute', PyJs_anonymous_277_)
    pass
    var.get('exports').put('relative', var.get('relative'))
    @Js
    def PyJs_anonymous_278_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers(['obj'])
        var.put('obj', var.get('Object').callprop('create', var.get(u"null")))
        return var.get('obj').contains(Js('__proto__')).neg()
    PyJs_anonymous_278_._set_name('anonymous')
    var.put('supportsNullProto', PyJs_anonymous_278_())
    pass
    pass
    var.get('exports').put('toSetString', (var.get('identity') if var.get('supportsNullProto') else var.get('toSetString')))
    pass
    var.get('exports').put('fromSetString', (var.get('identity') if var.get('supportsNullProto') else var.get('fromSetString')))
    pass
    pass
    var.get('exports').put('compareByOriginalPositions', var.get('compareByOriginalPositions'))
    pass
    var.get('exports').put('compareByGeneratedPositionsDeflated', var.get('compareByGeneratedPositionsDeflated'))
    pass
    pass
    var.get('exports').put('compareByGeneratedPositionsInflated', var.get('compareByGeneratedPositionsInflated'))
    pass
    var.get('exports').put('parseSourceMapInput', var.get('parseSourceMapInput'))
    pass
    var.get('exports').put('computeSourceURL', var.get('computeSourceURL'))
PyJs_anonymous_275_._set_name('anonymous')
PyJs_Object_280_ = Js({})
@Js
def PyJs_anonymous_281_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    var.get('exports').put('SourceMapGenerator', var.get('require')(Js('./lib/source-map-generator')).get('SourceMapGenerator'))
    var.get('exports').put('SourceMapConsumer', var.get('require')(Js('./lib/source-map-consumer')).get('SourceMapConsumer'))
    var.get('exports').put('SourceNode', var.get('require')(Js('./lib/source-node')).get('SourceNode'))
PyJs_anonymous_281_._set_name('anonymous')
PyJs_Object_282_ = Js({'./lib/source-map-consumer':Js(8.0),'./lib/source-map-generator':Js(9.0),'./lib/source-node':Js(10.0)})
@Js
def PyJs_anonymous_283_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    PyJs_Object_285_ = Js({})
    PyJs_Object_286_ = Js({'type':Js('tag'),'registry':Js(True),'raw':Js('escodegen'),'name':Js('escodegen'),'escapedName':Js('escodegen'),'rawSpec':Js(''),'saveSpec':var.get(u"null"),'fetchSpec':Js('latest')})
    PyJs_Object_287_ = Js({'esgenerate':Js('./bin/esgenerate.js'),'escodegen':Js('./bin/escodegen.js')})
    PyJs_Object_288_ = Js({'url':Js('https://github.com/estools/escodegen/issues')})
    PyJs_Object_289_ = Js({'esprima':Js('^3.1.3'),'estraverse':Js('^4.2.0'),'esutils':Js('^2.0.2'),'optionator':Js('^0.8.1'),'source-map':Js('~0.6.1')})
    PyJs_Object_290_ = Js({'acorn':Js('^4.0.4'),'bluebird':Js('^3.4.7'),'bower-registry-client':Js('^1.0.0'),'chai':Js('^3.5.0'),'commonjs-everywhere':Js('^0.9.7'),'gulp':Js('^3.8.10'),'gulp-eslint':Js('^3.0.1'),'gulp-mocha':Js('^3.0.1'),'semver':Js('^5.1.0')})
    PyJs_Object_291_ = Js({'node':Js('>=4.0')})
    PyJs_Object_292_ = Js({'name':Js('Yusuke Suzuki'),'email':Js('utatane.tea@gmail.com'),'url':Js('http://github.com/Constellation')})
    PyJs_Object_293_ = Js({'source-map':Js('~0.6.1')})
    PyJs_Object_294_ = Js({'type':Js('git'),'url':Js('git+ssh://git@github.com/estools/escodegen.git')})
    PyJs_Object_295_ = Js({'build':Js('cjsify -a path: tools/entry-point.js > escodegen.browser.js'),'build-min':Js('cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js'),'lint':Js('gulp lint'),'release':Js('node tools/release.js'),'test':Js('gulp travis'),'unit-test':Js('gulp test')})
    PyJs_Object_284_ = Js({'_from':Js('escodegen'),'_id':Js('escodegen@1.11.1'),'_inBundle':Js(False),'_integrity':Js('sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw=='),'_location':Js('/escodegen'),'_phantomChildren':PyJs_Object_285_,'_requested':PyJs_Object_286_,'_requiredBy':Js([Js('#USER'), Js('/')]),'_resolved':Js('https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz'),'_shasum':Js('c485ff8d6b4cdb89e27f4a856e91f118401ca510'),'_spec':Js('escodegen'),'_where':Js('/build/python-js2py/src/Js2Py-0.66/js2py'),'bin':PyJs_Object_287_,'bugs':PyJs_Object_288_,'bundleDependencies':Js(False),'dependencies':PyJs_Object_289_,'deprecated':Js(False),'description':Js('ECMAScript code generator'),'devDependencies':PyJs_Object_290_,'engines':PyJs_Object_291_,'files':Js([Js('LICENSE.BSD'), Js('README.md'), Js('bin'), Js('escodegen.js'), Js('package.json')]),'homepage':Js('http://github.com/estools/escodegen'),'license':Js('BSD-2-Clause'),'main':Js('escodegen.js'),'maintainers':Js([PyJs_Object_292_]),'name':Js('escodegen'),'optionalDependencies':PyJs_Object_293_,'repository':PyJs_Object_294_,'scripts':PyJs_Object_295_,'version':Js('1.11.1')})
    var.get('module').put('exports', PyJs_Object_284_)
PyJs_anonymous_283_._set_name('anonymous')
PyJs_Object_296_ = Js({})
@Js
def PyJs_anonymous_297_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    @Js
    def PyJs_clone_298_(exports, this, arguments, var=var):
        var = Scope({'exports':exports, 'this':this, 'arguments':arguments, 'clone':PyJs_clone_298_}, var)
        var.registers(['Reference', 'BREAK', 'attachComments', 'lowerBound', 'replace', 'upperBound', 'isProperty', 'Controller', 'traverse', 'ignoreJSHintError', 'VisitorOption', 'REMOVE', 'Syntax', 'SKIP', 'shallowCopy', 'VisitorKeys', 'deepCopy', 'objectCreate', 'Element', 'exports', 'objectKeys', 'isNode', 'extend', 'extendCommentRange', 'isArray'])
        @Js
        def PyJsHoisted_ignoreJSHintError_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            pass
        PyJsHoisted_ignoreJSHintError_.func_name = 'ignoreJSHintError'
        var.put('ignoreJSHintError', PyJsHoisted_ignoreJSHintError_)
        @Js
        def PyJsHoisted_deepCopy_(obj, this, arguments, var=var):
            var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
            var.registers(['ret', 'val', 'obj', 'key'])
            PyJs_Object_300_ = Js({})
            var.put('ret', PyJs_Object_300_)
            for PyJsTemp in var.get('obj'):
                var.put('key', PyJsTemp)
                if var.get('obj').callprop('hasOwnProperty', var.get('key')):
                    var.put('val', var.get('obj').get(var.get('key')))
                    if (PyJsStrictEq((Js('undefined') if PyJsStrictEq(var.get('val',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('val'))),Js('object')) and PyJsStrictNeq(var.get('val'),var.get(u"null"))):
                        var.get('ret').put(var.get('key'), var.get('deepCopy')(var.get('val')))
                    else:
                        var.get('ret').put(var.get('key'), var.get('val'))
            return var.get('ret')
        PyJsHoisted_deepCopy_.func_name = 'deepCopy'
        var.put('deepCopy', PyJsHoisted_deepCopy_)
        @Js
        def PyJsHoisted_shallowCopy_(obj, this, arguments, var=var):
            var = Scope({'obj':obj, 'this':this, 'arguments':arguments}, var)
            var.registers(['ret', 'obj', 'key'])
            PyJs_Object_301_ = Js({})
            var.put('ret', PyJs_Object_301_)
            for PyJsTemp in var.get('obj'):
                var.put('key', PyJsTemp)
                if var.get('obj').callprop('hasOwnProperty', var.get('key')):
                    var.get('ret').put(var.get('key'), var.get('obj').get(var.get('key')))
            return var.get('ret')
        PyJsHoisted_shallowCopy_.func_name = 'shallowCopy'
        var.put('shallowCopy', PyJsHoisted_shallowCopy_)
        @Js
        def PyJsHoisted_upperBound_(array, func, this, arguments, var=var):
            var = Scope({'array':array, 'func':func, 'this':this, 'arguments':arguments}, var)
            var.registers(['current', 'diff', 'i', 'len', 'func', 'array'])
            pass
            var.put('len', var.get('array').get('length'))
            var.put('i', Js(0.0))
            while var.get('len'):
                var.put('diff', PyJsBshift(var.get('len'),Js(1.0)))
                var.put('current', (var.get('i')+var.get('diff')))
                if var.get('func')(var.get('array').get(var.get('current'))):
                    var.put('len', var.get('diff'))
                else:
                    var.put('i', (var.get('current')+Js(1.0)))
                    var.put('len', (var.get('diff')+Js(1.0)), '-')
            return var.get('i')
        PyJsHoisted_upperBound_.func_name = 'upperBound'
        var.put('upperBound', PyJsHoisted_upperBound_)
        @Js
        def PyJsHoisted_lowerBound_(array, func, this, arguments, var=var):
            var = Scope({'array':array, 'func':func, 'this':this, 'arguments':arguments}, var)
            var.registers(['current', 'diff', 'i', 'len', 'func', 'array'])
            pass
            var.put('len', var.get('array').get('length'))
            var.put('i', Js(0.0))
            while var.get('len'):
                var.put('diff', PyJsBshift(var.get('len'),Js(1.0)))
                var.put('current', (var.get('i')+var.get('diff')))
                if var.get('func')(var.get('array').get(var.get('current'))):
                    var.put('i', (var.get('current')+Js(1.0)))
                    var.put('len', (var.get('diff')+Js(1.0)), '-')
                else:
                    var.put('len', var.get('diff'))
            return var.get('i')
        PyJsHoisted_lowerBound_.func_name = 'lowerBound'
        var.put('lowerBound', PyJsHoisted_lowerBound_)
        @Js
        def PyJsHoisted_extend_(to, PyJsArg_66726f6d_, this, arguments, var=var):
            var = Scope({'to':to, 'from':PyJsArg_66726f6d_, 'this':this, 'arguments':arguments}, var)
            var.registers(['to', 'i', 'from', 'keys', 'len', 'key'])
            var.put('keys', var.get('objectKeys')(var.get('from')))
            #for JS loop
            PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('keys').get('length')))
            while (var.get('i')<var.get('len')):
                try:
                    var.put('key', var.get('keys').get(var.get('i')))
                    var.get('to').put(var.get('key'), var.get('from').get(var.get('key')))
                finally:
                        var.put('i', Js(1.0), '+')
            return var.get('to')
        PyJsHoisted_extend_.func_name = 'extend'
        var.put('extend', PyJsHoisted_extend_)
        @Js
        def PyJsHoisted_Reference_(parent, key, this, arguments, var=var):
            var = Scope({'parent':parent, 'key':key, 'this':this, 'arguments':arguments}, var)
            var.registers(['parent', 'key'])
            var.get(u"this").put('parent', var.get('parent'))
            var.get(u"this").put('key', var.get('key'))
        PyJsHoisted_Reference_.func_name = 'Reference'
        var.put('Reference', PyJsHoisted_Reference_)
        @Js
        def PyJsHoisted_Element_(node, path, wrap, ref, this, arguments, var=var):
            var = Scope({'node':node, 'path':path, 'wrap':wrap, 'ref':ref, 'this':this, 'arguments':arguments}, var)
            var.registers(['wrap', 'node', 'ref', 'path'])
            var.get(u"this").put('node', var.get('node'))
            var.get(u"this").put('path', var.get('path'))
            var.get(u"this").put('wrap', var.get('wrap'))
            var.get(u"this").put('ref', var.get('ref'))
        PyJsHoisted_Element_.func_name = 'Element'
        var.put('Element', PyJsHoisted_Element_)
        @Js
        def PyJsHoisted_Controller_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            pass
        PyJsHoisted_Controller_.func_name = 'Controller'
        var.put('Controller', PyJsHoisted_Controller_)
        @Js
        def PyJsHoisted_isNode_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            if (var.get('node')==var.get(u"null")):
                return Js(False)
            return (PyJsStrictEq((Js('undefined') if PyJsStrictEq(var.get('node',throw=False).typeof(),Js('undefined')) else var.get('_typeof')(var.get('node'))),Js('object')) and PyJsStrictEq(var.get('node').get('type').typeof(),Js('string')))
        PyJsHoisted_isNode_.func_name = 'isNode'
        var.put('isNode', PyJsHoisted_isNode_)
        @Js
        def PyJsHoisted_isProperty_(nodeType, key, this, arguments, var=var):
            var = Scope({'nodeType':nodeType, 'key':key, 'this':this, 'arguments':arguments}, var)
            var.registers(['nodeType', 'key'])
            return ((PyJsStrictEq(var.get('nodeType'),var.get('Syntax').get('ObjectExpression')) or PyJsStrictEq(var.get('nodeType'),var.get('Syntax').get('ObjectPattern'))) and PyJsStrictEq(Js('properties'),var.get('key')))
        PyJsHoisted_isProperty_.func_name = 'isProperty'
        var.put('isProperty', PyJsHoisted_isProperty_)
        @Js
        def PyJsHoisted_traverse_(root, visitor, this, arguments, var=var):
            var = Scope({'root':root, 'visitor':visitor, 'this':this, 'arguments':arguments}, var)
            var.registers(['root', 'visitor', 'controller'])
            var.put('controller', var.get('Controller').create())
            return var.get('controller').callprop('traverse', var.get('root'), var.get('visitor'))
        PyJsHoisted_traverse_.func_name = 'traverse'
        var.put('traverse', PyJsHoisted_traverse_)
        @Js
        def PyJsHoisted_replace_(root, visitor, this, arguments, var=var):
            var = Scope({'root':root, 'visitor':visitor, 'this':this, 'arguments':arguments}, var)
            var.registers(['root', 'visitor', 'controller'])
            var.put('controller', var.get('Controller').create())
            return var.get('controller').callprop('replace', var.get('root'), var.get('visitor'))
        PyJsHoisted_replace_.func_name = 'replace'
        var.put('replace', PyJsHoisted_replace_)
        @Js
        def PyJsHoisted_extendCommentRange_(comment, tokens, this, arguments, var=var):
            var = Scope({'comment':comment, 'tokens':tokens, 'this':this, 'arguments':arguments}, var)
            var.registers(['target', 'comment', 'tokens'])
            pass
            @Js
            def PyJs_search_328_(token, this, arguments, var=var):
                var = Scope({'token':token, 'this':this, 'arguments':arguments, 'search':PyJs_search_328_}, var)
                var.registers(['token'])
                return (var.get('token').get('range').get('0')>var.get('comment').get('range').get('0'))
            PyJs_search_328_._set_name('search')
            var.put('target', var.get('upperBound')(var.get('tokens'), PyJs_search_328_))
            var.get('comment').put('extendedRange', Js([var.get('comment').get('range').get('0'), var.get('comment').get('range').get('1')]))
            if PyJsStrictNeq(var.get('target'),var.get('tokens').get('length')):
                var.get('comment').get('extendedRange').put('1', var.get('tokens').get(var.get('target')).get('range').get('0'))
            var.put('target', Js(1.0), '-')
            if (var.get('target')>=Js(0.0)):
                var.get('comment').get('extendedRange').put('0', var.get('tokens').get(var.get('target')).get('range').get('1'))
            return var.get('comment')
        PyJsHoisted_extendCommentRange_.func_name = 'extendCommentRange'
        var.put('extendCommentRange', PyJsHoisted_extendCommentRange_)
        @Js
        def PyJsHoisted_attachComments_(tree, providedComments, tokens, this, arguments, var=var):
            var = Scope({'tree':tree, 'providedComments':providedComments, 'tokens':tokens, 'this':this, 'arguments':arguments}, var)
            var.registers(['tree', 'comment', 'i', 'cursor', 'comments', 'providedComments', 'len', 'tokens'])
            var.put('comments', Js([]))
            if var.get('tree').get('range').neg():
                PyJsTempException = JsToPyException(var.get('Error').create(Js('attachComments needs range information')))
                raise PyJsTempException
            if var.get('tokens').get('length').neg():
                if var.get('providedComments').get('length'):
                    #for JS loop
                    PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('providedComments').get('length')))
                    while (var.get('i')<var.get('len')):
                        try:
                            var.put('comment', var.get('deepCopy')(var.get('providedComments').get(var.get('i'))))
                            var.get('comment').put('extendedRange', Js([Js(0.0), var.get('tree').get('range').get('0')]))
                            var.get('comments').callprop('push', var.get('comment'))
                        finally:
                                var.put('i', Js(1.0), '+')
                    var.get('tree').put('leadingComments', var.get('comments'))
                return var.get('tree')
            #for JS loop
            PyJsComma(var.put('i', Js(0.0)),var.put('len', var.get('providedComments').get('length')))
            while (var.get('i')<var.get('len')):
                try:
                    var.get('comments').callprop('push', var.get('extendCommentRange')(var.get('deepCopy')(var.get('providedComments').get(var.get('i'))), var.get('tokens')))
                finally:
                        var.put('i', Js(1.0), '+')
            var.put('cursor', Js(0.0))
            @Js
            def PyJs_enter_330_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments, 'enter':PyJs_enter_330_}, var)
                var.registers(['comment', 'node'])
                pass
                while (var.get('cursor')<var.get('comments').get('length')):
                    var.put('comment', var.get('comments').get(var.get('cursor')))
                    if (var.get('comment').get('extendedRange').get('1')>var.get('node').get('range').get('0')):
                        break
                    if PyJsStrictEq(var.get('comment').get('extendedRange').get('1'),var.get('node').get('range').get('0')):
                        if var.get('node').get('leadingComments').neg():
                            var.get('node').put('leadingComments', Js([]))
                        var.get('node').get('leadingComments').callprop('push', var.get('comment'))
                        var.get('comments').callprop('splice', var.get('cursor'), Js(1.0))
                    else:
                        var.put('cursor', Js(1.0), '+')
                if PyJsStrictEq(var.get('cursor'),var.get('comments').get('length')):
                    return var.get('VisitorOption').get('Break')
                if (var.get('comments').get(var.get('cursor')).get('extendedRange').get('0')>var.get('node').get('range').get('1')):
                    return var.get('VisitorOption').get('Skip')
            PyJs_enter_330_._set_name('enter')
            PyJs_Object_329_ = Js({'enter':PyJs_enter_330_})
            var.get('traverse')(var.get('tree'), PyJs_Object_329_)
            var.put('cursor', Js(0.0))
            @Js
            def PyJs_leave_332_(node, this, arguments, var=var):
                var = Scope({'node':node, 'this':this, 'arguments':arguments, 'leave':PyJs_leave_332_}, var)
                var.registers(['comment', 'node'])
                pass
                while (var.get('cursor')<var.get('comments').get('length')):
                    var.put('comment', var.get('comments').get(var.get('cursor')))
                    if (var.get('node').get('range').get('1')<var.get('comment').get('extendedRange').get('0')):
                        break
                    if PyJsStrictEq(var.get('node').get('range').get('1'),var.get('comment').get('extendedRange').get('0')):
                        if var.get('node').get('trailingComments').neg():
                            var.get('node').put('trailingComments', Js([]))
                        var.get('node').get('trailingComments').callprop('push', var.get('comment'))
                        var.get('comments').callprop('splice', var.get('cursor'), Js(1.0))
                    else:
                        var.put('cursor', Js(1.0), '+')
                if PyJsStrictEq(var.get('cursor'),var.get('comments').get('length')):
                    return var.get('VisitorOption').get('Break')
                if (var.get('comments').get(var.get('cursor')).get('extendedRange').get('0')>var.get('node').get('range').get('1')):
                    return var.get('VisitorOption').get('Skip')
            PyJs_leave_332_._set_name('leave')
            PyJs_Object_331_ = Js({'leave':PyJs_leave_332_})
            var.get('traverse')(var.get('tree'), PyJs_Object_331_)
            return var.get('tree')
        PyJsHoisted_attachComments_.func_name = 'attachComments'
        var.put('attachComments', PyJsHoisted_attachComments_)
        Js('use strict')
        pass
        pass
        var.put('isArray', var.get('Array').get('isArray'))
        if var.get('isArray').neg():
            @Js
            def PyJs_isArray_299_(array, this, arguments, var=var):
                var = Scope({'array':array, 'this':this, 'arguments':arguments, 'isArray':PyJs_isArray_299_}, var)
                var.registers(['array'])
                return PyJsStrictEq(var.get('Object').get('prototype').get('toString').callprop('call', var.get('array')),Js('[object Array]'))
            PyJs_isArray_299_._set_name('isArray')
            var.put('isArray', PyJs_isArray_299_)
        pass
        pass
        var.get('ignoreJSHintError')(var.get('shallowCopy'))
        pass
        pass
        var.get('ignoreJSHintError')(var.get('lowerBound'))
        @Js
        def PyJs_anonymous_302_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers(['F'])
            @Js
            def PyJsHoisted_F_(this, arguments, var=var):
                var = Scope({'this':this, 'arguments':arguments}, var)
                var.registers([])
                pass
            PyJsHoisted_F_.func_name = 'F'
            var.put('F', PyJsHoisted_F_)
            pass
            @Js
            def PyJs_anonymous_303_(o, this, arguments, var=var):
                var = Scope({'o':o, 'this':this, 'arguments':arguments}, var)
                var.registers(['o'])
                var.get('F').put('prototype', var.get('o'))
                return var.get('F').create()
            PyJs_anonymous_303_._set_name('anonymous')
            return PyJs_anonymous_303_
        PyJs_anonymous_302_._set_name('anonymous')
        var.put('objectCreate', (var.get('Object').get('create') or PyJs_anonymous_302_()))
        @Js
        def PyJs_anonymous_304_(o, this, arguments, var=var):
            var = Scope({'o':o, 'this':this, 'arguments':arguments}, var)
            var.registers(['key', 'keys', 'o'])
            var.put('keys', Js([]))
            for PyJsTemp in var.get('o'):
                var.put('key', PyJsTemp)
                var.get('keys').callprop('push', var.get('key'))
            return var.get('keys')
        PyJs_anonymous_304_._set_name('anonymous')
        var.put('objectKeys', (var.get('Object').get('keys') or PyJs_anonymous_304_))
        pass
        PyJs_Object_305_ = Js({'AssignmentExpression':Js('AssignmentExpression'),'AssignmentPattern':Js('AssignmentPattern'),'ArrayExpression':Js('ArrayExpression'),'ArrayPattern':Js('ArrayPattern'),'ArrowFunctionExpression':Js('ArrowFunctionExpression'),'AwaitExpression':Js('AwaitExpression'),'BlockStatement':Js('BlockStatement'),'BinaryExpression':Js('BinaryExpression'),'BreakStatement':Js('BreakStatement'),'CallExpression':Js('CallExpression'),'CatchClause':Js('CatchClause'),'ClassBody':Js('ClassBody'),'ClassDeclaration':Js('ClassDeclaration'),'ClassExpression':Js('ClassExpression'),'ComprehensionBlock':Js('ComprehensionBlock'),'ComprehensionExpression':Js('ComprehensionExpression'),'ConditionalExpression':Js('ConditionalExpression'),'ContinueStatement':Js('ContinueStatement'),'DebuggerStatement':Js('DebuggerStatement'),'DirectiveStatement':Js('DirectiveStatement'),'DoWhileStatement':Js('DoWhileStatement'),'EmptyStatement':Js('EmptyStatement'),'ExportAllDeclaration':Js('ExportAllDeclaration'),'ExportDefaultDeclaration':Js('ExportDefaultDeclaration'),'ExportNamedDeclaration':Js('ExportNamedDeclaration'),'ExportSpecifier':Js('ExportSpecifier'),'ExpressionStatement':Js('ExpressionStatement'),'ForStatement':Js('ForStatement'),'ForInStatement':Js('ForInStatement'),'ForOfStatement':Js('ForOfStatement'),'FunctionDeclaration':Js('FunctionDeclaration'),'FunctionExpression':Js('FunctionExpression'),'GeneratorExpression':Js('GeneratorExpression'),'Identifier':Js('Identifier'),'IfStatement':Js('IfStatement'),'ImportDeclaration':Js('ImportDeclaration'),'ImportDefaultSpecifier':Js('ImportDefaultSpecifier'),'ImportNamespaceSpecifier':Js('ImportNamespaceSpecifier'),'ImportSpecifier':Js('ImportSpecifier'),'Literal':Js('Literal'),'LabeledStatement':Js('LabeledStatement'),'LogicalExpression':Js('LogicalExpression'),'MemberExpression':Js('MemberExpression'),'MetaProperty':Js('MetaProperty'),'MethodDefinition':Js('MethodDefinition'),'ModuleSpecifier':Js('ModuleSpecifier'),'NewExpression':Js('NewExpression'),'ObjectExpression':Js('ObjectExpression'),'ObjectPattern':Js('ObjectPattern'),'Program':Js('Program'),'Property':Js('Property'),'RestElement':Js('RestElement'),'ReturnStatement':Js('ReturnStatement'),'SequenceExpression':Js('SequenceExpression'),'SpreadElement':Js('SpreadElement'),'Super':Js('Super'),'SwitchStatement':Js('SwitchStatement'),'SwitchCase':Js('SwitchCase'),'TaggedTemplateExpression':Js('TaggedTemplateExpression'),'TemplateElement':Js('TemplateElement'),'TemplateLiteral':Js('TemplateLiteral'),'ThisExpression':Js('ThisExpression'),'ThrowStatement':Js('ThrowStatement'),'TryStatement':Js('TryStatement'),'UnaryExpression':Js('UnaryExpression'),'UpdateExpression':Js('UpdateExpression'),'VariableDeclaration':Js('VariableDeclaration'),'VariableDeclarator':Js('VariableDeclarator'),'WhileStatement':Js('WhileStatement'),'WithStatement':Js('WithStatement'),'YieldExpression':Js('YieldExpression')})
        var.put('Syntax', PyJs_Object_305_)
        PyJs_Object_306_ = Js({'AssignmentExpression':Js([Js('left'), Js('right')]),'AssignmentPattern':Js([Js('left'), Js('right')]),'ArrayExpression':Js([Js('elements')]),'ArrayPattern':Js([Js('elements')]),'ArrowFunctionExpression':Js([Js('params'), Js('body')]),'AwaitExpression':Js([Js('argument')]),'BlockStatement':Js([Js('body')]),'BinaryExpression':Js([Js('left'), Js('right')]),'BreakStatement':Js([Js('label')]),'CallExpression':Js([Js('callee'), Js('arguments')]),'CatchClause':Js([Js('param'), Js('body')]),'ClassBody':Js([Js('body')]),'ClassDeclaration':Js([Js('id'), Js('superClass'), Js('body')]),'ClassExpression':Js([Js('id'), Js('superClass'), Js('body')]),'ComprehensionBlock':Js([Js('left'), Js('right')]),'ComprehensionExpression':Js([Js('blocks'), Js('filter'), Js('body')]),'ConditionalExpression':Js([Js('test'), Js('consequent'), Js('alternate')]),'ContinueStatement':Js([Js('label')]),'DebuggerStatement':Js([]),'DirectiveStatement':Js([]),'DoWhileStatement':Js([Js('body'), Js('test')]),'EmptyStatement':Js([]),'ExportAllDeclaration':Js([Js('source')]),'ExportDefaultDeclaration':Js([Js('declaration')]),'ExportNamedDeclaration':Js([Js('declaration'), Js('specifiers'), Js('source')]),'ExportSpecifier':Js([Js('exported'), Js('local')]),'ExpressionStatement':Js([Js('expression')]),'ForStatement':Js([Js('init'), Js('test'), Js('update'), Js('body')]),'ForInStatement':Js([Js('left'), Js('right'), Js('body')]),'ForOfStatement':Js([Js('left'), Js('right'), Js('body')]),'FunctionDeclaration':Js([Js('id'), Js('params'), Js('body')]),'FunctionExpression':Js([Js('id'), Js('params'), Js('body')]),'GeneratorExpression':Js([Js('blocks'), Js('filter'), Js('body')]),'Identifier':Js([]),'IfStatement':Js([Js('test'), Js('consequent'), Js('alternate')]),'ImportDeclaration':Js([Js('specifiers'), Js('source')]),'ImportDefaultSpecifier':Js([Js('local')]),'ImportNamespaceSpecifier':Js([Js('local')]),'ImportSpecifier':Js([Js('imported'), Js('local')]),'Literal':Js([]),'LabeledStatement':Js([Js('label'), Js('body')]),'LogicalExpression':Js([Js('left'), Js('right')]),'MemberExpression':Js([Js('object'), Js('property')]),'MetaProperty':Js([Js('meta'), Js('property')]),'MethodDefinition':Js([Js('key'), Js('value')]),'ModuleSpecifier':Js([]),'NewExpression':Js([Js('callee'), Js('arguments')]),'ObjectExpression':Js([Js('properties')]),'ObjectPattern':Js([Js('properties')]),'Program':Js([Js('body')]),'Property':Js([Js('key'), Js('value')]),'RestElement':Js([Js('argument')]),'ReturnStatement':Js([Js('argument')]),'SequenceExpression':Js([Js('expressions')]),'SpreadElement':Js([Js('argument')]),'Super':Js([]),'SwitchStatement':Js([Js('discriminant'), Js('cases')]),'SwitchCase':Js([Js('test'), Js('consequent')]),'TaggedTemplateExpression':Js([Js('tag'), Js('quasi')]),'TemplateElement':Js([]),'TemplateLiteral':Js([Js('quasis'), Js('expressions')]),'ThisExpression':Js([]),'ThrowStatement':Js([Js('argument')]),'TryStatement':Js([Js('block'), Js('handler'), Js('finalizer')]),'UnaryExpression':Js([Js('argument')]),'UpdateExpression':Js([Js('argument')]),'VariableDeclaration':Js([Js('declarations')]),'VariableDeclarator':Js([Js('id'), Js('init')]),'WhileStatement':Js([Js('test'), Js('body')]),'WithStatement':Js([Js('object'), Js('body')]),'YieldExpression':Js([Js('argument')])})
        var.put('VisitorKeys', PyJs_Object_306_)
        PyJs_Object_307_ = Js({})
        var.put('BREAK', PyJs_Object_307_)
        PyJs_Object_308_ = Js({})
        var.put('SKIP', PyJs_Object_308_)
        PyJs_Object_309_ = Js({})
        var.put('REMOVE', PyJs_Object_309_)
        PyJs_Object_310_ = Js({'Break':var.get('BREAK'),'Skip':var.get('SKIP'),'Remove':var.get('REMOVE')})
        var.put('VisitorOption', PyJs_Object_310_)
        pass
        @Js
        def PyJs_replace_311_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments, 'replace':PyJs_replace_311_}, var)
            var.registers(['node'])
            var.get(u"this").get('parent').put(var.get(u"this").get('key'), var.get('node'))
        PyJs_replace_311_._set_name('replace')
        var.get('Reference').get('prototype').put('replace', PyJs_replace_311_)
        @Js
        def PyJs_remove_312_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments, 'remove':PyJs_remove_312_}, var)
            var.registers([])
            if var.get('isArray')(var.get(u"this").get('parent')):
                var.get(u"this").get('parent').callprop('splice', var.get(u"this").get('key'), Js(1.0))
                return Js(True)
            else:
                var.get(u"this").callprop('replace', var.get(u"null"))
                return Js(False)
        PyJs_remove_312_._set_name('remove')
        var.get('Reference').get('prototype').put('remove', PyJs_remove_312_)
        pass
        pass
        @Js
        def PyJs_path_313_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments, 'path':PyJs_path_313_}, var)
            var.registers(['addToPath', 'i', 'iz', 'result', 'jz', 'j', 'element'])
            @Js
            def PyJsHoisted_addToPath_(result, path, this, arguments, var=var):
                var = Scope({'result':result, 'path':path, 'this':this, 'arguments':arguments}, var)
                var.registers(['result', 'path'])
                if var.get('isArray')(var.get('path')):
                    #for JS loop
                    PyJsComma(var.put('j', Js(0.0)),var.put('jz', var.get('path').get('length')))
                    while (var.get('j')<var.get('jz')):
                        try:
                            var.get('result').callprop('push', var.get('path').get(var.get('j')))
                        finally:
                                var.put('j',Js(var.get('j').to_number())+Js(1))
                else:
                    var.get('result').callprop('push', var.get('path'))
            PyJsHoisted_addToPath_.func_name = 'addToPath'
            var.put('addToPath', PyJsHoisted_addToPath_)
            pass
            pass
            if var.get(u"this").get('__current').get('path').neg():
                return var.get(u"null")
            var.put('result', Js([]))
            #for JS loop
            PyJsComma(var.put('i', Js(2.0)),var.put('iz', var.get(u"this").get('__leavelist').get('length')))
            while (var.get('i')<var.get('iz')):
                try:
                    var.put('element', var.get(u"this").get('__leavelist').get(var.get('i')))
                    var.get('addToPath')(var.get('result'), var.get('element').get('path'))
                finally:
                        var.put('i',Js(var.get('i').to_number())+Js(1))
            var.get('addToPath')(var.get('result'), var.get(u"this").get('__current').get('path'))
            return var.get('result')
        PyJs_path_313_._set_name('path')
        var.get('Controller').get('prototype').put('path', PyJs_path_313_)
        @Js
        def PyJs_anonymous_314_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            var.put('node', var.get(u"this").callprop('current'))
            return (var.get('node').get('type') or var.get(u"this").get('__current').get('wrap'))
        PyJs_anonymous_314_._set_name('anonymous')
        var.get('Controller').get('prototype').put('type', PyJs_anonymous_314_)
        @Js
        def PyJs_parents_315_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments, 'parents':PyJs_parents_315_}, var)
            var.registers(['iz', 'i', 'result'])
            pass
            var.put('result', Js([]))
            #for JS loop
            PyJsComma(var.put('i', Js(1.0)),var.put('iz', var.get(u"this").get('__leavelist').get('length')))
            while (var.get('i')<var.get('iz')):
                try:
                    var.get('result').callprop('push', var.get(u"this").get('__leavelist').get(var.get('i')).get('node'))
                finally:
                        var.put('i',Js(var.get('i').to_number())+Js(1))
            return var.get('result')
        PyJs_parents_315_._set_name('parents')
        var.get('Controller').get('prototype').put('parents', PyJs_parents_315_)
        @Js
        def PyJs_current_316_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments, 'current':PyJs_current_316_}, var)
            var.registers([])
            return var.get(u"this").get('__current').get('node')
        PyJs_current_316_._set_name('current')
        var.get('Controller').get('prototype').put('current', PyJs_current_316_)
        @Js
        def PyJs___execute_317_(callback, element, this, arguments, var=var):
            var = Scope({'callback':callback, 'element':element, 'this':this, 'arguments':arguments, '__execute':PyJs___execute_317_}, var)
            var.registers(['callback', 'element', 'previous', 'result'])
            pass
            var.put('result', var.get('undefined'))
            var.put('previous', var.get(u"this").get('__current'))
            var.get(u"this").put('__current', var.get('element'))
            var.get(u"this").put('__state', var.get(u"null"))
            if var.get('callback'):
                var.put('result', var.get('callback').callprop('call', var.get(u"this"), var.get('element').get('node'), var.get(u"this").get('__leavelist').get((var.get(u"this").get('__leavelist').get('length')-Js(1.0))).get('node')))
            var.get(u"this").put('__current', var.get('previous'))
            return var.get('result')
        PyJs___execute_317_._set_name('__execute')
        var.get('Controller').get('prototype').put('__execute', PyJs___execute_317_)
        @Js
        def PyJs_notify_318_(flag, this, arguments, var=var):
            var = Scope({'flag':flag, 'this':this, 'arguments':arguments, 'notify':PyJs_notify_318_}, var)
            var.registers(['flag'])
            var.get(u"this").put('__state', var.get('flag'))
        PyJs_notify_318_._set_name('notify')
        var.get('Controller').get('prototype').put('notify', PyJs_notify_318_)
        @Js
        def PyJs_anonymous_319_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            var.get(u"this").callprop('notify', var.get('SKIP'))
        PyJs_anonymous_319_._set_name('anonymous')
        var.get('Controller').get('prototype').put('skip', PyJs_anonymous_319_)
        @Js
        def PyJs_anonymous_320_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            var.get(u"this").callprop('notify', var.get('BREAK'))
        PyJs_anonymous_320_._set_name('anonymous')
        var.get('Controller').get('prototype').put('break', PyJs_anonymous_320_)
        @Js
        def PyJs_anonymous_321_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            var.get(u"this").callprop('notify', var.get('REMOVE'))
        PyJs_anonymous_321_._set_name('anonymous')
        var.get('Controller').get('prototype').put('remove', PyJs_anonymous_321_)
        @Js
        def PyJs_anonymous_322_(root, visitor, this, arguments, var=var):
            var = Scope({'root':root, 'visitor':visitor, 'this':this, 'arguments':arguments}, var)
            var.registers(['root', 'visitor'])
            var.get(u"this").put('visitor', var.get('visitor'))
            var.get(u"this").put('root', var.get('root'))
            var.get(u"this").put('__worklist', Js([]))
            var.get(u"this").put('__leavelist', Js([]))
            var.get(u"this").put('__current', var.get(u"null"))
            var.get(u"this").put('__state', var.get(u"null"))
            var.get(u"this").put('__fallback', var.get(u"null"))
            if PyJsStrictEq(var.get('visitor').get('fallback'),Js('iteration')):
                var.get(u"this").put('__fallback', var.get('objectKeys'))
            else:
                if PyJsStrictEq(var.get('visitor').get('fallback').typeof(),Js('function')):
                    var.get(u"this").put('__fallback', var.get('visitor').get('fallback'))
            var.get(u"this").put('__keys', var.get('VisitorKeys'))
            if var.get('visitor').get('keys'):
                var.get(u"this").put('__keys', var.get('extend')(var.get('objectCreate')(var.get(u"this").get('__keys')), var.get('visitor').get('keys')))
        PyJs_anonymous_322_._set_name('anonymous')
        var.get('Controller').get('prototype').put('__initialize', PyJs_anonymous_322_)
        pass
        pass
        @Js
        def PyJs_traverse_323_(root, visitor, this, arguments, var=var):
            var = Scope({'root':root, 'visitor':visitor, 'this':this, 'arguments':arguments, 'traverse':PyJs_traverse_323_}, var)
            var.registers(['ret', 'current', 'leavelist', 'worklist', 'nodeType', 'current2', 'node', 'candidate', 'root', 'candidates', 'sentinel', 'visitor', 'element', 'key'])
            pass
            var.get(u"this").callprop('__initialize', var.get('root'), var.get('visitor'))
            PyJs_Object_324_ = Js({})
            var.put('sentinel', PyJs_Object_324_)
            var.put('worklist', var.get(u"this").get('__worklist'))
            var.put('leavelist', var.get(u"this").get('__leavelist'))
            var.get('worklist').callprop('push', var.get('Element').create(var.get('root'), var.get(u"null"), var.get(u"null"), var.get(u"null")))
            var.get('leavelist').callprop('push', var.get('Element').create(var.get(u"null"), var.get(u"null"), var.get(u"null"), var.get(u"null")))
            while var.get('worklist').get('length'):
                var.put('element', var.get('worklist').callprop('pop'))
                if PyJsStrictEq(var.get('element'),var.get('sentinel')):
                    var.put('element', var.get('leavelist').callprop('pop'))
                    var.put('ret', var.get(u"this").callprop('__execute', var.get('visitor').get('leave'), var.get('element')))
                    if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('BREAK')) or PyJsStrictEq(var.get('ret'),var.get('BREAK'))):
                        return var.get('undefined')
                    continue
                if var.get('element').get('node'):
                    var.put('ret', var.get(u"this").callprop('__execute', var.get('visitor').get('enter'), var.get('element')))
                    if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('BREAK')) or PyJsStrictEq(var.get('ret'),var.get('BREAK'))):
                        return var.get('undefined')
                    var.get('worklist').callprop('push', var.get('sentinel'))
                    var.get('leavelist').callprop('push', var.get('element'))
                    if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('SKIP')) or PyJsStrictEq(var.get('ret'),var.get('SKIP'))):
                        continue
                    var.put('node', var.get('element').get('node'))
                    var.put('nodeType', (var.get('node').get('type') or var.get('element').get('wrap')))
                    var.put('candidates', var.get(u"this").get('__keys').get(var.get('nodeType')))
                    if var.get('candidates').neg():
                        if var.get(u"this").get('__fallback'):
                            var.put('candidates', var.get(u"this").callprop('__fallback', var.get('node')))
                        else:
                            PyJsTempException = JsToPyException(var.get('Error').create(((Js('Unknown node type ')+var.get('nodeType'))+Js('.'))))
                            raise PyJsTempException
                    var.put('current', var.get('candidates').get('length'))
                    while (var.put('current', Js(1.0), '-')>=Js(0.0)):
                        var.put('key', var.get('candidates').get(var.get('current')))
                        var.put('candidate', var.get('node').get(var.get('key')))
                        if var.get('candidate').neg():
                            continue
                        if var.get('isArray')(var.get('candidate')):
                            var.put('current2', var.get('candidate').get('length'))
                            while (var.put('current2', Js(1.0), '-')>=Js(0.0)):
                                if var.get('candidate').get(var.get('current2')).neg():
                                    continue
                                if var.get('isProperty')(var.get('nodeType'), var.get('candidates').get(var.get('current'))):
                                    var.put('element', var.get('Element').create(var.get('candidate').get(var.get('current2')), Js([var.get('key'), var.get('current2')]), Js('Property'), var.get(u"null")))
                                else:
                                    if var.get('isNode')(var.get('candidate').get(var.get('current2'))):
                                        var.put('element', var.get('Element').create(var.get('candidate').get(var.get('current2')), Js([var.get('key'), var.get('current2')]), var.get(u"null"), var.get(u"null")))
                                    else:
                                        continue
                                var.get('worklist').callprop('push', var.get('element'))
                        else:
                            if var.get('isNode')(var.get('candidate')):
                                var.get('worklist').callprop('push', var.get('Element').create(var.get('candidate'), var.get('key'), var.get(u"null"), var.get(u"null")))
        PyJs_traverse_323_._set_name('traverse')
        var.get('Controller').get('prototype').put('traverse', PyJs_traverse_323_)
        @Js
        def PyJs_replace_325_(root, visitor, this, arguments, var=var):
            var = Scope({'root':root, 'visitor':visitor, 'this':this, 'arguments':arguments, 'replace':PyJs_replace_325_}, var)
            var.registers(['current', 'leavelist', 'worklist', 'nodeType', 'outer', 'current2', 'removeElem', 'node', 'target', 'candidate', 'root', 'candidates', 'sentinel', 'visitor', 'element', 'key'])
            @Js
            def PyJsHoisted_removeElem_(element, this, arguments, var=var):
                var = Scope({'element':element, 'this':this, 'arguments':arguments}, var)
                var.registers(['i', 'parent', 'nextElem', 'element', 'key'])
                pass
                if var.get('element').get('ref').callprop('remove'):
                    var.put('key', var.get('element').get('ref').get('key'))
                    var.put('parent', var.get('element').get('ref').get('parent'))
                    var.put('i', var.get('worklist').get('length'))
                    while (var.put('i',Js(var.get('i').to_number())-Js(1))+Js(1)):
                        var.put('nextElem', var.get('worklist').get(var.get('i')))
                        if (var.get('nextElem').get('ref') and PyJsStrictEq(var.get('nextElem').get('ref').get('parent'),var.get('parent'))):
                            if (var.get('nextElem').get('ref').get('key')<var.get('key')):
                                break
                            var.get('nextElem').get('ref').put('key',Js(var.get('nextElem').get('ref').get('key').to_number())-Js(1))
            PyJsHoisted_removeElem_.func_name = 'removeElem'
            var.put('removeElem', PyJsHoisted_removeElem_)
            pass
            pass
            var.get(u"this").callprop('__initialize', var.get('root'), var.get('visitor'))
            PyJs_Object_326_ = Js({})
            var.put('sentinel', PyJs_Object_326_)
            var.put('worklist', var.get(u"this").get('__worklist'))
            var.put('leavelist', var.get(u"this").get('__leavelist'))
            PyJs_Object_327_ = Js({'root':var.get('root')})
            var.put('outer', PyJs_Object_327_)
            var.put('element', var.get('Element').create(var.get('root'), var.get(u"null"), var.get(u"null"), var.get('Reference').create(var.get('outer'), Js('root'))))
            var.get('worklist').callprop('push', var.get('element'))
            var.get('leavelist').callprop('push', var.get('element'))
            while var.get('worklist').get('length'):
                var.put('element', var.get('worklist').callprop('pop'))
                if PyJsStrictEq(var.get('element'),var.get('sentinel')):
                    var.put('element', var.get('leavelist').callprop('pop'))
                    var.put('target', var.get(u"this").callprop('__execute', var.get('visitor').get('leave'), var.get('element')))
                    if (((PyJsStrictNeq(var.get('target'),var.get('undefined')) and PyJsStrictNeq(var.get('target'),var.get('BREAK'))) and PyJsStrictNeq(var.get('target'),var.get('SKIP'))) and PyJsStrictNeq(var.get('target'),var.get('REMOVE'))):
                        var.get('element').get('ref').callprop('replace', var.get('target'))
                    if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('REMOVE')) or PyJsStrictEq(var.get('target'),var.get('REMOVE'))):
                        var.get('removeElem')(var.get('element'))
                    if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('BREAK')) or PyJsStrictEq(var.get('target'),var.get('BREAK'))):
                        return var.get('outer').get('root')
                    continue
                var.put('target', var.get(u"this").callprop('__execute', var.get('visitor').get('enter'), var.get('element')))
                if (((PyJsStrictNeq(var.get('target'),var.get('undefined')) and PyJsStrictNeq(var.get('target'),var.get('BREAK'))) and PyJsStrictNeq(var.get('target'),var.get('SKIP'))) and PyJsStrictNeq(var.get('target'),var.get('REMOVE'))):
                    var.get('element').get('ref').callprop('replace', var.get('target'))
                    var.get('element').put('node', var.get('target'))
                if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('REMOVE')) or PyJsStrictEq(var.get('target'),var.get('REMOVE'))):
                    var.get('removeElem')(var.get('element'))
                    var.get('element').put('node', var.get(u"null"))
                if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('BREAK')) or PyJsStrictEq(var.get('target'),var.get('BREAK'))):
                    return var.get('outer').get('root')
                var.put('node', var.get('element').get('node'))
                if var.get('node').neg():
                    continue
                var.get('worklist').callprop('push', var.get('sentinel'))
                var.get('leavelist').callprop('push', var.get('element'))
                if (PyJsStrictEq(var.get(u"this").get('__state'),var.get('SKIP')) or PyJsStrictEq(var.get('target'),var.get('SKIP'))):
                    continue
                var.put('nodeType', (var.get('node').get('type') or var.get('element').get('wrap')))
                var.put('candidates', var.get(u"this").get('__keys').get(var.get('nodeType')))
                if var.get('candidates').neg():
                    if var.get(u"this").get('__fallback'):
                        var.put('candidates', var.get(u"this").callprop('__fallback', var.get('node')))
                    else:
                        PyJsTempException = JsToPyException(var.get('Error').create(((Js('Unknown node type ')+var.get('nodeType'))+Js('.'))))
                        raise PyJsTempException
                var.put('current', var.get('candidates').get('length'))
                while (var.put('current', Js(1.0), '-')>=Js(0.0)):
                    var.put('key', var.get('candidates').get(var.get('current')))
                    var.put('candidate', var.get('node').get(var.get('key')))
                    if var.get('candidate').neg():
                        continue
                    if var.get('isArray')(var.get('candidate')):
                        var.put('current2', var.get('candidate').get('length'))
                        while (var.put('current2', Js(1.0), '-')>=Js(0.0)):
                            if var.get('candidate').get(var.get('current2')).neg():
                                continue
                            if var.get('isProperty')(var.get('nodeType'), var.get('candidates').get(var.get('current'))):
                                var.put('element', var.get('Element').create(var.get('candidate').get(var.get('current2')), Js([var.get('key'), var.get('current2')]), Js('Property'), var.get('Reference').create(var.get('candidate'), var.get('current2'))))
                            else:
                                if var.get('isNode')(var.get('candidate').get(var.get('current2'))):
                                    var.put('element', var.get('Element').create(var.get('candidate').get(var.get('current2')), Js([var.get('key'), var.get('current2')]), var.get(u"null"), var.get('Reference').create(var.get('candidate'), var.get('current2'))))
                                else:
                                    continue
                            var.get('worklist').callprop('push', var.get('element'))
                    else:
                        if var.get('isNode')(var.get('candidate')):
                            var.get('worklist').callprop('push', var.get('Element').create(var.get('candidate'), var.get('key'), var.get(u"null"), var.get('Reference').create(var.get('node'), var.get('key'))))
            return var.get('outer').get('root')
        PyJs_replace_325_._set_name('replace')
        var.get('Controller').get('prototype').put('replace', PyJs_replace_325_)
        pass
        pass
        pass
        pass
        var.get('exports').put('version', var.get('require')(Js('./package.json')).get('version'))
        var.get('exports').put('Syntax', var.get('Syntax'))
        var.get('exports').put('traverse', var.get('traverse'))
        var.get('exports').put('replace', var.get('replace'))
        var.get('exports').put('attachComments', var.get('attachComments'))
        var.get('exports').put('VisitorKeys', var.get('VisitorKeys'))
        var.get('exports').put('VisitorOption', var.get('VisitorOption'))
        var.get('exports').put('Controller', var.get('Controller'))
        @Js
        def PyJs_anonymous_333_(this, arguments, var=var):
            var = Scope({'this':this, 'arguments':arguments}, var)
            var.registers([])
            PyJs_Object_334_ = Js({})
            return var.get('clone')(PyJs_Object_334_)
        PyJs_anonymous_333_._set_name('anonymous')
        var.get('exports').put('cloneEnvironment', PyJs_anonymous_333_)
        return var.get('exports')
    PyJs_clone_298_._set_name('clone')
    PyJs_clone_298_(var.get('exports'))
PyJs_anonymous_297_._set_name('anonymous')
PyJs_Object_335_ = Js({'./package.json':Js(15.0)})
@Js
def PyJs_anonymous_336_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    PyJs_Object_338_ = Js({})
    PyJs_Object_339_ = Js({'type':Js('range'),'registry':Js(True),'raw':Js('estraverse@^4.2.0'),'name':Js('estraverse'),'escapedName':Js('estraverse'),'rawSpec':Js('^4.2.0'),'saveSpec':var.get(u"null"),'fetchSpec':Js('^4.2.0')})
    PyJs_Object_340_ = Js({'url':Js('https://github.com/estools/estraverse/issues')})
    PyJs_Object_341_ = Js({'babel-preset-es2015':Js('^6.3.13'),'babel-register':Js('^6.3.13'),'chai':Js('^2.1.1'),'espree':Js('^1.11.0'),'gulp':Js('^3.8.10'),'gulp-bump':Js('^0.2.2'),'gulp-filter':Js('^2.0.0'),'gulp-git':Js('^1.0.1'),'gulp-tag-version':Js('^1.2.1'),'jshint':Js('^2.5.6'),'mocha':Js('^2.1.0')})
    PyJs_Object_342_ = Js({'node':Js('>=0.10.0')})
    PyJs_Object_343_ = Js({'name':Js('Yusuke Suzuki'),'email':Js('utatane.tea@gmail.com'),'url':Js('http://github.com/Constellation')})
    PyJs_Object_344_ = Js({'type':Js('git'),'url':Js('git+ssh://git@github.com/estools/estraverse.git')})
    PyJs_Object_345_ = Js({'lint':Js('jshint estraverse.js'),'test':Js('npm run-script lint && npm run-script unit-test'),'unit-test':Js('mocha --compilers js:babel-register')})
    PyJs_Object_337_ = Js({'_from':Js('estraverse@^4.2.0'),'_id':Js('estraverse@4.2.0'),'_inBundle':Js(False),'_integrity':Js('sha1-De4/7TH81GlhjOc0IJn8GvoL2xM='),'_location':Js('/estraverse'),'_phantomChildren':PyJs_Object_338_,'_requested':PyJs_Object_339_,'_requiredBy':Js([Js('/escodegen')]),'_resolved':Js('https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz'),'_shasum':Js('0dee3fed31fcd469618ce7342099fc1afa0bdb13'),'_spec':Js('estraverse@^4.2.0'),'_where':Js('/build/python-js2py/src/Js2Py-0.66/js2py/node_modules/escodegen'),'bugs':PyJs_Object_340_,'bundleDependencies':Js(False),'deprecated':Js(False),'description':Js('ECMAScript JS AST traversal functions'),'devDependencies':PyJs_Object_341_,'engines':PyJs_Object_342_,'homepage':Js('https://github.com/estools/estraverse'),'license':Js('BSD-2-Clause'),'main':Js('estraverse.js'),'maintainers':Js([PyJs_Object_343_]),'name':Js('estraverse'),'repository':PyJs_Object_344_,'scripts':PyJs_Object_345_,'version':Js('4.2.0')})
    var.get('module').put('exports', PyJs_Object_337_)
PyJs_anonymous_336_._set_name('anonymous')
PyJs_Object_346_ = Js({})
@Js
def PyJs_anonymous_347_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    @Js
    def PyJs_anonymous_348_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers(['isStatement', 'isExpression', 'trailingStatement', 'isProblematicIfStatement', 'isSourceElement', 'isIterationStatement'])
        @Js
        def PyJsHoisted_isExpression_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            if (var.get('node')==var.get(u"null")):
                return Js(False)
            while 1:
                SWITCHED = False
                CONDITION = (var.get('node').get('type'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ArrayExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('AssignmentExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('BinaryExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('CallExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ConditionalExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('FunctionExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('Identifier')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('Literal')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('LogicalExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('MemberExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('NewExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ObjectExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('SequenceExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ThisExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('UnaryExpression')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('UpdateExpression')):
                    SWITCHED = True
                    return Js(True)
                SWITCHED = True
                break
            return Js(False)
        PyJsHoisted_isExpression_.func_name = 'isExpression'
        var.put('isExpression', PyJsHoisted_isExpression_)
        @Js
        def PyJsHoisted_isIterationStatement_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            if (var.get('node')==var.get(u"null")):
                return Js(False)
            while 1:
                SWITCHED = False
                CONDITION = (var.get('node').get('type'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js('DoWhileStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForInStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('WhileStatement')):
                    SWITCHED = True
                    return Js(True)
                SWITCHED = True
                break
            return Js(False)
        PyJsHoisted_isIterationStatement_.func_name = 'isIterationStatement'
        var.put('isIterationStatement', PyJsHoisted_isIterationStatement_)
        @Js
        def PyJsHoisted_isStatement_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            if (var.get('node')==var.get(u"null")):
                return Js(False)
            while 1:
                SWITCHED = False
                CONDITION = (var.get('node').get('type'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js('BlockStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('BreakStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ContinueStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('DebuggerStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('DoWhileStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('EmptyStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ExpressionStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForInStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('IfStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('LabeledStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ReturnStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('SwitchStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ThrowStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('TryStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('VariableDeclaration')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('WhileStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('WithStatement')):
                    SWITCHED = True
                    return Js(True)
                SWITCHED = True
                break
            return Js(False)
        PyJsHoisted_isStatement_.func_name = 'isStatement'
        var.put('isStatement', PyJsHoisted_isStatement_)
        @Js
        def PyJsHoisted_isSourceElement_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            return (var.get('isStatement')(var.get('node')) or ((var.get('node')!=var.get(u"null")) and PyJsStrictEq(var.get('node').get('type'),Js('FunctionDeclaration'))))
        PyJsHoisted_isSourceElement_.func_name = 'isSourceElement'
        var.put('isSourceElement', PyJsHoisted_isSourceElement_)
        @Js
        def PyJsHoisted_trailingStatement_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['node'])
            while 1:
                SWITCHED = False
                CONDITION = (var.get('node').get('type'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js('IfStatement')):
                    SWITCHED = True
                    if (var.get('node').get('alternate')!=var.get(u"null")):
                        return var.get('node').get('alternate')
                    return var.get('node').get('consequent')
                if SWITCHED or PyJsStrictEq(CONDITION, Js('LabeledStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('ForInStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('WhileStatement')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('WithStatement')):
                    SWITCHED = True
                    return var.get('node').get('body')
                SWITCHED = True
                break
            return var.get(u"null")
        PyJsHoisted_trailingStatement_.func_name = 'trailingStatement'
        var.put('trailingStatement', PyJsHoisted_trailingStatement_)
        @Js
        def PyJsHoisted_isProblematicIfStatement_(node, this, arguments, var=var):
            var = Scope({'node':node, 'this':this, 'arguments':arguments}, var)
            var.registers(['current', 'node'])
            pass
            if PyJsStrictNeq(var.get('node').get('type'),Js('IfStatement')):
                return Js(False)
            if (var.get('node').get('alternate')==var.get(u"null")):
                return Js(False)
            var.put('current', var.get('node').get('consequent'))
            while 1:
                if PyJsStrictEq(var.get('current').get('type'),Js('IfStatement')):
                    if (var.get('current').get('alternate')==var.get(u"null")):
                        return Js(True)
                var.put('current', var.get('trailingStatement')(var.get('current')))
                if not var.get('current'):
                    break
            return Js(False)
        PyJsHoisted_isProblematicIfStatement_.func_name = 'isProblematicIfStatement'
        var.put('isProblematicIfStatement', PyJsHoisted_isProblematicIfStatement_)
        Js('use strict')
        pass
        pass
        pass
        pass
        pass
        pass
        PyJs_Object_349_ = Js({'isExpression':var.get('isExpression'),'isStatement':var.get('isStatement'),'isIterationStatement':var.get('isIterationStatement'),'isSourceElement':var.get('isSourceElement'),'isProblematicIfStatement':var.get('isProblematicIfStatement'),'trailingStatement':var.get('trailingStatement')})
        var.get('module').put('exports', PyJs_Object_349_)
    PyJs_anonymous_348_._set_name('anonymous')
    PyJs_anonymous_348_()
PyJs_anonymous_347_._set_name('anonymous')
PyJs_Object_350_ = Js({})
@Js
def PyJs_anonymous_351_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    @Js
    def PyJs_anonymous_352_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers(['isWhiteSpace', 'isLineTerminator', 'isHexDigit', 'ES6Regex', 'isIdentifierPartES6', 'NON_ASCII_WHITESPACES', 'isIdentifierStartES6', 'isOctalDigit', 'IDENTIFIER_START', 'ch', 'isDecimalDigit', 'fromCodePoint', 'IDENTIFIER_PART', 'ES5Regex', 'isIdentifierStartES5', 'isIdentifierPartES5'])
        @Js
        def PyJsHoisted_isDecimalDigit_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return ((Js(48)<=var.get('ch')) and (var.get('ch')<=Js(57)))
        PyJsHoisted_isDecimalDigit_.func_name = 'isDecimalDigit'
        var.put('isDecimalDigit', PyJsHoisted_isDecimalDigit_)
        @Js
        def PyJsHoisted_isHexDigit_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return ((((Js(48)<=var.get('ch')) and (var.get('ch')<=Js(57))) or ((Js(97)<=var.get('ch')) and (var.get('ch')<=Js(102)))) or ((Js(65)<=var.get('ch')) and (var.get('ch')<=Js(70))))
        PyJsHoisted_isHexDigit_.func_name = 'isHexDigit'
        var.put('isHexDigit', PyJsHoisted_isHexDigit_)
        @Js
        def PyJsHoisted_isOctalDigit_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return ((var.get('ch')>=Js(48)) and (var.get('ch')<=Js(55)))
        PyJsHoisted_isOctalDigit_.func_name = 'isOctalDigit'
        var.put('isOctalDigit', PyJsHoisted_isOctalDigit_)
        @Js
        def PyJsHoisted_isWhiteSpace_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (((((PyJsStrictEq(var.get('ch'),Js(32)) or PyJsStrictEq(var.get('ch'),Js(9))) or PyJsStrictEq(var.get('ch'),Js(11))) or PyJsStrictEq(var.get('ch'),Js(12))) or PyJsStrictEq(var.get('ch'),Js(160))) or ((var.get('ch')>=Js(5760)) and (var.get('NON_ASCII_WHITESPACES').callprop('indexOf', var.get('ch'))>=Js(0.0))))
        PyJsHoisted_isWhiteSpace_.func_name = 'isWhiteSpace'
        var.put('isWhiteSpace', PyJsHoisted_isWhiteSpace_)
        @Js
        def PyJsHoisted_isLineTerminator_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (((PyJsStrictEq(var.get('ch'),Js(10)) or PyJsStrictEq(var.get('ch'),Js(13))) or PyJsStrictEq(var.get('ch'),Js(8232))) or PyJsStrictEq(var.get('ch'),Js(8233)))
        PyJsHoisted_isLineTerminator_.func_name = 'isLineTerminator'
        var.put('isLineTerminator', PyJsHoisted_isLineTerminator_)
        @Js
        def PyJsHoisted_fromCodePoint_(cp, this, arguments, var=var):
            var = Scope({'cp':cp, 'this':this, 'arguments':arguments}, var)
            var.registers(['cu1', 'cu2', 'cp'])
            if (var.get('cp')<=Js(65535)):
                return var.get('String').callprop('fromCharCode', var.get('cp'))
            var.put('cu1', var.get('String').callprop('fromCharCode', (var.get('Math').callprop('floor', ((var.get('cp')-Js(65536))/Js(1024)))+Js(55296))))
            var.put('cu2', var.get('String').callprop('fromCharCode', (((var.get('cp')-Js(65536))%Js(1024))+Js(56320))))
            return (var.get('cu1')+var.get('cu2'))
        PyJsHoisted_fromCodePoint_.func_name = 'fromCodePoint'
        var.put('fromCodePoint', PyJsHoisted_fromCodePoint_)
        @Js
        def PyJsHoisted_isIdentifierStartES5_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (var.get('IDENTIFIER_START').get(var.get('ch')) if (var.get('ch')<Js(128)) else var.get('ES5Regex').get('NonAsciiIdentifierStart').callprop('test', var.get('fromCodePoint')(var.get('ch'))))
        PyJsHoisted_isIdentifierStartES5_.func_name = 'isIdentifierStartES5'
        var.put('isIdentifierStartES5', PyJsHoisted_isIdentifierStartES5_)
        @Js
        def PyJsHoisted_isIdentifierPartES5_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (var.get('IDENTIFIER_PART').get(var.get('ch')) if (var.get('ch')<Js(128)) else var.get('ES5Regex').get('NonAsciiIdentifierPart').callprop('test', var.get('fromCodePoint')(var.get('ch'))))
        PyJsHoisted_isIdentifierPartES5_.func_name = 'isIdentifierPartES5'
        var.put('isIdentifierPartES5', PyJsHoisted_isIdentifierPartES5_)
        @Js
        def PyJsHoisted_isIdentifierStartES6_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (var.get('IDENTIFIER_START').get(var.get('ch')) if (var.get('ch')<Js(128)) else var.get('ES6Regex').get('NonAsciiIdentifierStart').callprop('test', var.get('fromCodePoint')(var.get('ch'))))
        PyJsHoisted_isIdentifierStartES6_.func_name = 'isIdentifierStartES6'
        var.put('isIdentifierStartES6', PyJsHoisted_isIdentifierStartES6_)
        @Js
        def PyJsHoisted_isIdentifierPartES6_(ch, this, arguments, var=var):
            var = Scope({'ch':ch, 'this':this, 'arguments':arguments}, var)
            var.registers(['ch'])
            return (var.get('IDENTIFIER_PART').get(var.get('ch')) if (var.get('ch')<Js(128)) else var.get('ES6Regex').get('NonAsciiIdentifierPart').callprop('test', var.get('fromCodePoint')(var.get('ch'))))
        PyJsHoisted_isIdentifierPartES6_.func_name = 'isIdentifierPartES6'
        var.put('isIdentifierPartES6', PyJsHoisted_isIdentifierPartES6_)
        Js('use strict')
        pass
        PyJs_Object_353_ = Js({'NonAsciiIdentifierStart':JsRegExp('/[\\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\\u08A0-\\u08B2\\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\\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\\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\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\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-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\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\\u2160-\\u2188\\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-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\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-\\uAB5F\\uAB64\\uAB65\\uABC0-\\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]/'),'NonAsciiIdentifierPart':JsRegExp('/[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\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-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\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-\\u0B6F\\u0B71\\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-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/')})
        var.put('ES5Regex', PyJs_Object_353_)
        PyJs_Object_354_ = Js({'NonAsciiIdentifierStart':JsRegExp('/[\\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\\u08A0-\\u08B2\\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\\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\\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\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\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-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\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\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\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\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\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-\\uAB5F\\uAB64\\uAB65\\uABC0-\\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\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\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\\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]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\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]|\\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]|\\uD87E[\\uDC00-\\uDE1D]/'),'NonAsciiIdentifierPart':JsRegExp('/[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\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-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\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-\\u0B6F\\u0B71\\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-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\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\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\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\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDD0-\\uDDDA\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF01-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF98]|\\uD809[\\uDC00-\\uDC6E]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\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\\uDFCE-\\uDFFF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\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]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/')})
        var.put('ES6Regex', PyJs_Object_354_)
        pass
        pass
        pass
        var.put('NON_ASCII_WHITESPACES', Js([Js(5760), Js(6158), Js(8192), Js(8193), Js(8194), Js(8195), Js(8196), Js(8197), Js(8198), Js(8199), Js(8200), Js(8201), Js(8202), Js(8239), Js(8287), Js(12288), Js(65279)]))
        pass
        pass
        pass
        var.put('IDENTIFIER_START', var.get('Array').create(Js(128)))
        #for JS loop
        var.put('ch', Js(0.0))
        while (var.get('ch')<Js(128)):
            try:
                var.get('IDENTIFIER_START').put(var.get('ch'), (((((var.get('ch')>=Js(97)) and (var.get('ch')<=Js(122))) or ((var.get('ch')>=Js(65)) and (var.get('ch')<=Js(90)))) or PyJsStrictEq(var.get('ch'),Js(36))) or PyJsStrictEq(var.get('ch'),Js(95))))
            finally:
                    var.put('ch',Js(var.get('ch').to_number())+Js(1))
        var.put('IDENTIFIER_PART', var.get('Array').create(Js(128)))
        #for JS loop
        var.put('ch', Js(0.0))
        while (var.get('ch')<Js(128)):
            try:
                var.get('IDENTIFIER_PART').put(var.get('ch'), ((((((var.get('ch')>=Js(97)) and (var.get('ch')<=Js(122))) or ((var.get('ch')>=Js(65)) and (var.get('ch')<=Js(90)))) or ((var.get('ch')>=Js(48)) and (var.get('ch')<=Js(57)))) or PyJsStrictEq(var.get('ch'),Js(36))) or PyJsStrictEq(var.get('ch'),Js(95))))
            finally:
                    var.put('ch',Js(var.get('ch').to_number())+Js(1))
        pass
        pass
        pass
        pass
        PyJs_Object_355_ = Js({'isDecimalDigit':var.get('isDecimalDigit'),'isHexDigit':var.get('isHexDigit'),'isOctalDigit':var.get('isOctalDigit'),'isWhiteSpace':var.get('isWhiteSpace'),'isLineTerminator':var.get('isLineTerminator'),'isIdentifierStartES5':var.get('isIdentifierStartES5'),'isIdentifierPartES5':var.get('isIdentifierPartES5'),'isIdentifierStartES6':var.get('isIdentifierStartES6'),'isIdentifierPartES6':var.get('isIdentifierPartES6')})
        var.get('module').put('exports', PyJs_Object_355_)
    PyJs_anonymous_352_._set_name('anonymous')
    PyJs_anonymous_352_()
PyJs_anonymous_351_._set_name('anonymous')
PyJs_Object_356_ = Js({})
@Js
def PyJs_anonymous_357_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    @Js
    def PyJs_anonymous_358_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers(['isKeywordES5', 'isRestrictedWord', 'isIdentifierES5', 'decodeUtf16', 'isStrictModeReservedWordES6', 'isReservedWordES6', 'isIdentifierES6', 'isIdentifierNameES6', 'isReservedWordES5', 'isIdentifierNameES5', 'code', 'isKeywordES6'])
        @Js
        def PyJsHoisted_isStrictModeReservedWordES6_(id, this, arguments, var=var):
            var = Scope({'id':id, 'this':this, 'arguments':arguments}, var)
            var.registers(['id'])
            while 1:
                SWITCHED = False
                CONDITION = (var.get('id'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js('implements')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('interface')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('package')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('private')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('protected')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('public')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('static')):
                    SWITCHED = True
                    pass
                if SWITCHED or PyJsStrictEq(CONDITION, Js('let')):
                    SWITCHED = True
                    return Js(True)
                if True:
                    SWITCHED = True
                    return Js(False)
                SWITCHED = True
                break
        PyJsHoisted_isStrictModeReservedWordES6_.func_name = 'isStrictModeReservedWordES6'
        var.put('isStrictModeReservedWordES6', PyJsHoisted_isStrictModeReservedWordES6_)
        @Js
        def PyJsHoisted_isKeywordES5_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            if (var.get('strict').neg() and PyJsStrictEq(var.get('id'),Js('yield'))):
                return Js(False)
            return var.get('isKeywordES6')(var.get('id'), var.get('strict'))
        PyJsHoisted_isKeywordES5_.func_name = 'isKeywordES5'
        var.put('isKeywordES5', PyJsHoisted_isKeywordES5_)
        @Js
        def PyJsHoisted_isKeywordES6_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            if (var.get('strict') and var.get('isStrictModeReservedWordES6')(var.get('id'))):
                return Js(True)
            while 1:
                SWITCHED = False
                CONDITION = (var.get('id').get('length'))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(2.0)):
                    SWITCHED = True
                    return ((PyJsStrictEq(var.get('id'),Js('if')) or PyJsStrictEq(var.get('id'),Js('in'))) or PyJsStrictEq(var.get('id'),Js('do')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(3.0)):
                    SWITCHED = True
                    return (((PyJsStrictEq(var.get('id'),Js('var')) or PyJsStrictEq(var.get('id'),Js('for'))) or PyJsStrictEq(var.get('id'),Js('new'))) or PyJsStrictEq(var.get('id'),Js('try')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(4.0)):
                    SWITCHED = True
                    return (((((PyJsStrictEq(var.get('id'),Js('this')) or PyJsStrictEq(var.get('id'),Js('else'))) or PyJsStrictEq(var.get('id'),Js('case'))) or PyJsStrictEq(var.get('id'),Js('void'))) or PyJsStrictEq(var.get('id'),Js('with'))) or PyJsStrictEq(var.get('id'),Js('enum')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(5.0)):
                    SWITCHED = True
                    return (((((((PyJsStrictEq(var.get('id'),Js('while')) or PyJsStrictEq(var.get('id'),Js('break'))) or PyJsStrictEq(var.get('id'),Js('catch'))) or PyJsStrictEq(var.get('id'),Js('throw'))) or PyJsStrictEq(var.get('id'),Js('const'))) or PyJsStrictEq(var.get('id'),Js('yield'))) or PyJsStrictEq(var.get('id'),Js('class'))) or PyJsStrictEq(var.get('id'),Js('super')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(6.0)):
                    SWITCHED = True
                    return (((((PyJsStrictEq(var.get('id'),Js('return')) or PyJsStrictEq(var.get('id'),Js('typeof'))) or PyJsStrictEq(var.get('id'),Js('delete'))) or PyJsStrictEq(var.get('id'),Js('switch'))) or PyJsStrictEq(var.get('id'),Js('export'))) or PyJsStrictEq(var.get('id'),Js('import')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(7.0)):
                    SWITCHED = True
                    return ((PyJsStrictEq(var.get('id'),Js('default')) or PyJsStrictEq(var.get('id'),Js('finally'))) or PyJsStrictEq(var.get('id'),Js('extends')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(8.0)):
                    SWITCHED = True
                    return ((PyJsStrictEq(var.get('id'),Js('function')) or PyJsStrictEq(var.get('id'),Js('continue'))) or PyJsStrictEq(var.get('id'),Js('debugger')))
                if SWITCHED or PyJsStrictEq(CONDITION, Js(10.0)):
                    SWITCHED = True
                    return PyJsStrictEq(var.get('id'),Js('instanceof'))
                if True:
                    SWITCHED = True
                    return Js(False)
                SWITCHED = True
                break
        PyJsHoisted_isKeywordES6_.func_name = 'isKeywordES6'
        var.put('isKeywordES6', PyJsHoisted_isKeywordES6_)
        @Js
        def PyJsHoisted_isReservedWordES5_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            return (((PyJsStrictEq(var.get('id'),Js('null')) or PyJsStrictEq(var.get('id'),Js('true'))) or PyJsStrictEq(var.get('id'),Js('false'))) or var.get('isKeywordES5')(var.get('id'), var.get('strict')))
        PyJsHoisted_isReservedWordES5_.func_name = 'isReservedWordES5'
        var.put('isReservedWordES5', PyJsHoisted_isReservedWordES5_)
        @Js
        def PyJsHoisted_isReservedWordES6_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            return (((PyJsStrictEq(var.get('id'),Js('null')) or PyJsStrictEq(var.get('id'),Js('true'))) or PyJsStrictEq(var.get('id'),Js('false'))) or var.get('isKeywordES6')(var.get('id'), var.get('strict')))
        PyJsHoisted_isReservedWordES6_.func_name = 'isReservedWordES6'
        var.put('isReservedWordES6', PyJsHoisted_isReservedWordES6_)
        @Js
        def PyJsHoisted_isRestrictedWord_(id, this, arguments, var=var):
            var = Scope({'id':id, 'this':this, 'arguments':arguments}, var)
            var.registers(['id'])
            return (PyJsStrictEq(var.get('id'),Js('eval')) or PyJsStrictEq(var.get('id'),Js('arguments')))
        PyJsHoisted_isRestrictedWord_.func_name = 'isRestrictedWord'
        var.put('isRestrictedWord', PyJsHoisted_isRestrictedWord_)
        @Js
        def PyJsHoisted_isIdentifierNameES5_(id, this, arguments, var=var):
            var = Scope({'id':id, 'this':this, 'arguments':arguments}, var)
            var.registers(['iz', 'ch', 'id', 'i'])
            pass
            if PyJsStrictEq(var.get('id').get('length'),Js(0.0)):
                return Js(False)
            var.put('ch', var.get('id').callprop('charCodeAt', Js(0.0)))
            if var.get('code').callprop('isIdentifierStartES5', var.get('ch')).neg():
                return Js(False)
            #for JS loop
            PyJsComma(var.put('i', Js(1.0)),var.put('iz', var.get('id').get('length')))
            while (var.get('i')<var.get('iz')):
                try:
                    var.put('ch', var.get('id').callprop('charCodeAt', var.get('i')))
                    if var.get('code').callprop('isIdentifierPartES5', var.get('ch')).neg():
                        return Js(False)
                finally:
                        var.put('i',Js(var.get('i').to_number())+Js(1))
            return Js(True)
        PyJsHoisted_isIdentifierNameES5_.func_name = 'isIdentifierNameES5'
        var.put('isIdentifierNameES5', PyJsHoisted_isIdentifierNameES5_)
        @Js
        def PyJsHoisted_decodeUtf16_(lead, trail, this, arguments, var=var):
            var = Scope({'lead':lead, 'trail':trail, 'this':this, 'arguments':arguments}, var)
            var.registers(['lead', 'trail'])
            return ((((var.get('lead')-Js(55296))*Js(1024))+(var.get('trail')-Js(56320)))+Js(65536))
        PyJsHoisted_decodeUtf16_.func_name = 'decodeUtf16'
        var.put('decodeUtf16', PyJsHoisted_decodeUtf16_)
        @Js
        def PyJsHoisted_isIdentifierNameES6_(id, this, arguments, var=var):
            var = Scope({'id':id, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'i', 'iz', 'ch', 'check', 'lowCh'])
            pass
            if PyJsStrictEq(var.get('id').get('length'),Js(0.0)):
                return Js(False)
            var.put('check', var.get('code').get('isIdentifierStartES6'))
            #for JS loop
            PyJsComma(var.put('i', Js(0.0)),var.put('iz', var.get('id').get('length')))
            while (var.get('i')<var.get('iz')):
                try:
                    var.put('ch', var.get('id').callprop('charCodeAt', var.get('i')))
                    if ((Js(55296)<=var.get('ch')) and (var.get('ch')<=Js(56319))):
                        var.put('i',Js(var.get('i').to_number())+Js(1))
                        if (var.get('i')>=var.get('iz')):
                            return Js(False)
                        var.put('lowCh', var.get('id').callprop('charCodeAt', var.get('i')))
                        if ((Js(56320)<=var.get('lowCh')) and (var.get('lowCh')<=Js(57343))).neg():
                            return Js(False)
                        var.put('ch', var.get('decodeUtf16')(var.get('ch'), var.get('lowCh')))
                    if var.get('check')(var.get('ch')).neg():
                        return Js(False)
                    var.put('check', var.get('code').get('isIdentifierPartES6'))
                finally:
                        var.put('i',Js(var.get('i').to_number())+Js(1))
            return Js(True)
        PyJsHoisted_isIdentifierNameES6_.func_name = 'isIdentifierNameES6'
        var.put('isIdentifierNameES6', PyJsHoisted_isIdentifierNameES6_)
        @Js
        def PyJsHoisted_isIdentifierES5_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            return (var.get('isIdentifierNameES5')(var.get('id')) and var.get('isReservedWordES5')(var.get('id'), var.get('strict')).neg())
        PyJsHoisted_isIdentifierES5_.func_name = 'isIdentifierES5'
        var.put('isIdentifierES5', PyJsHoisted_isIdentifierES5_)
        @Js
        def PyJsHoisted_isIdentifierES6_(id, strict, this, arguments, var=var):
            var = Scope({'id':id, 'strict':strict, 'this':this, 'arguments':arguments}, var)
            var.registers(['id', 'strict'])
            return (var.get('isIdentifierNameES6')(var.get('id')) and var.get('isReservedWordES6')(var.get('id'), var.get('strict')).neg())
        PyJsHoisted_isIdentifierES6_.func_name = 'isIdentifierES6'
        var.put('isIdentifierES6', PyJsHoisted_isIdentifierES6_)
        Js('use strict')
        var.put('code', var.get('require')(Js('./code')))
        pass
        pass
        pass
        pass
        pass
        pass
        pass
        pass
        pass
        pass
        pass
        PyJs_Object_359_ = Js({'isKeywordES5':var.get('isKeywordES5'),'isKeywordES6':var.get('isKeywordES6'),'isReservedWordES5':var.get('isReservedWordES5'),'isReservedWordES6':var.get('isReservedWordES6'),'isRestrictedWord':var.get('isRestrictedWord'),'isIdentifierNameES5':var.get('isIdentifierNameES5'),'isIdentifierNameES6':var.get('isIdentifierNameES6'),'isIdentifierES5':var.get('isIdentifierES5'),'isIdentifierES6':var.get('isIdentifierES6')})
        var.get('module').put('exports', PyJs_Object_359_)
    PyJs_anonymous_358_._set_name('anonymous')
    PyJs_anonymous_358_()
PyJs_anonymous_357_._set_name('anonymous')
PyJs_Object_360_ = Js({'./code':Js(17.0)})
@Js
def PyJs_anonymous_361_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['exports', 'module', 'require'])
    @Js
    def PyJs_anonymous_362_(this, arguments, var=var):
        var = Scope({'this':this, 'arguments':arguments}, var)
        var.registers([])
        Js('use strict')
        var.get('exports').put('ast', var.get('require')(Js('./ast')))
        var.get('exports').put('code', var.get('require')(Js('./code')))
        var.get('exports').put('keyword', var.get('require')(Js('./keyword')))
    PyJs_anonymous_362_._set_name('anonymous')
    PyJs_anonymous_362_()
PyJs_anonymous_361_._set_name('anonymous')
PyJs_Object_363_ = Js({'./ast':Js(16.0),'./code':Js(17.0),'./keyword':Js(18.0)})
@Js
def PyJs_anonymous_364_(require, module, exports, this, arguments, var=var):
    var = Scope({'require':require, 'module':module, 'exports':exports, 'this':this, 'arguments':arguments}, var)
    var.registers(['module', 'require', 'exports', 'addToGlobals', 'module_temp_love_python'])
    @Js
    def PyJsHoisted_addToGlobals_(name, obj, this, arguments, var=var):
        var = Scope({'name':name, 'obj':obj, 'this':this, 'arguments':arguments}, var)
        var.registers(['obj', 'name'])
        if var.get('Object').get('prototype').callprop('hasOwnProperty', Js('_fake_exports')).neg():
            PyJs_Object_365_ = Js({})
            var.get('Object').get('prototype').put('_fake_exports', PyJs_Object_365_)
        var.get('Object').get('prototype').get('_fake_exports').put(var.get('name'), var.get('obj'))
    PyJsHoisted_addToGlobals_.func_name = 'addToGlobals'
    var.put('addToGlobals', PyJsHoisted_addToGlobals_)
    pass
    pass
    pass
    var.put('module_temp_love_python', var.get('require')(Js('escodegen')))
    var.get('addToGlobals')(Js('escodegen'), var.get('module_temp_love_python'))
PyJs_anonymous_364_._set_name('anonymous')
PyJs_Object_366_ = Js({'escodegen':Js(1.0)})
PyJs_Object_2_ = Js({'1':Js([PyJs_anonymous_3_, PyJs_Object_129_]),'2':Js([PyJs_anonymous_130_, PyJs_Object_138_]),'3':Js([PyJs_anonymous_139_, PyJs_Object_142_]),'4':Js([PyJs_anonymous_143_, PyJs_Object_146_]),'5':Js([PyJs_anonymous_147_, PyJs_Object_149_]),'6':Js([PyJs_anonymous_150_, PyJs_Object_155_]),'7':Js([PyJs_anonymous_156_, PyJs_Object_158_]),'8':Js([PyJs_anonymous_159_, PyJs_Object_217_]),'9':Js([PyJs_anonymous_218_, PyJs_Object_243_]),'10':Js([PyJs_anonymous_244_, PyJs_Object_274_]),'11':Js([PyJs_anonymous_275_, PyJs_Object_280_]),'12':Js([PyJs_anonymous_281_, PyJs_Object_282_]),'13':Js([PyJs_anonymous_283_, PyJs_Object_296_]),'14':Js([PyJs_anonymous_297_, PyJs_Object_335_]),'15':Js([PyJs_anonymous_336_, PyJs_Object_346_]),'16':Js([PyJs_anonymous_347_, PyJs_Object_350_]),'17':Js([PyJs_anonymous_351_, PyJs_Object_356_]),'18':Js([PyJs_anonymous_357_, PyJs_Object_360_]),'19':Js([PyJs_anonymous_361_, PyJs_Object_363_]),'20':Js([PyJs_anonymous_364_, PyJs_Object_366_])})
PyJs_Object_367_ = Js({})
@Js
def PyJs_anonymous_368_(this, arguments, var=var):
    var = Scope({'this':this, 'arguments':arguments}, var)
    var.registers(['r'])
    @Js
    def PyJsHoisted_r_(e, n, t, this, arguments, var=var):
        var = Scope({'e':e, 'n':n, 't':t, 'this':this, 'arguments':arguments}, var)
        var.registers(['i', 'o', 'e', 'n', 'u', 't'])
        @Js
        def PyJsHoisted_o_(i, f, this, arguments, var=var):
            var = Scope({'i':i, 'f':f, 'this':this, 'arguments':arguments}, var)
            var.registers(['a', 'i', 'p', 'c', 'f'])
            if var.get('n').get(var.get('i')).neg():
                if var.get('e').get(var.get('i')).neg():
                    var.put('c', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
                    if (var.get('f').neg() and var.get('c')):
                        return var.get('c')(var.get('i'), Js(0.0).neg())
                    if var.get('u'):
                        return var.get('u')(var.get('i'), Js(0.0).neg())
                    var.put('a', var.get('Error').create(((Js("Cannot find module '")+var.get('i'))+Js("'"))))
                    PyJsTempException = JsToPyException(PyJsComma(var.get('a').put('code', Js('MODULE_NOT_FOUND')),var.get('a')))
                    raise PyJsTempException
                PyJs_Object_370_ = Js({})
                PyJs_Object_369_ = Js({'exports':PyJs_Object_370_})
                var.put('p', var.get('n').put(var.get('i'), PyJs_Object_369_))
                @Js
                def PyJs_anonymous_371_(r, this, arguments, var=var):
                    var = Scope({'r':r, 'this':this, 'arguments':arguments}, var)
                    var.registers(['n', 'r'])
                    var.put('n', var.get('e').get(var.get('i')).get('1').get(var.get('r')))
                    return var.get('o')((var.get('n') or var.get('r')))
                PyJs_anonymous_371_._set_name('anonymous')
                var.get('e').get(var.get('i')).get('0').callprop('call', var.get('p').get('exports'), PyJs_anonymous_371_, var.get('p'), var.get('p').get('exports'), var.get('r'), var.get('e'), var.get('n'), var.get('t'))
            return var.get('n').get(var.get('i')).get('exports')
        PyJsHoisted_o_.func_name = 'o'
        var.put('o', PyJsHoisted_o_)
        pass
        #for JS loop
        var.put('u', ((Js('function')==var.get('require',throw=False).typeof()) and var.get('require')))
        var.put('i', Js(0.0))
        while (var.get('i')<var.get('t').get('length')):
            try:
                var.get('o')(var.get('t').get(var.get('i')))
            finally:
                    (var.put('i',Js(var.get('i').to_number())+Js(1))-Js(1))
        return var.get('o')
    PyJsHoisted_r_.func_name = 'r'
    var.put('r', PyJsHoisted_r_)
    pass
    return var.get('r')
PyJs_anonymous_368_._set_name('anonymous')
PyJs_anonymous_368_()(PyJs_Object_2_, PyJs_Object_367_, Js([Js(20.0)]))
pass
pass
pass
pass
var.put('escodegen', var.get('getFromGlobals')(Js('escodegen')))
var.get('escodegen')
