WIP: port alien swarm and extend engine for asw

This commit is contained in:
nillerusr
2023-10-03 20:02:58 +03:00
parent 7d3c0d8b5a
commit 8322130890
617 changed files with 161164 additions and 220 deletions
@@ -0,0 +1,655 @@
//=== ======= Copyright © 2008, Valve Corporation, All rights reserved. ========
//
// Purpose: Script initially run after squirrel VM is initialized
//
//=============================================================================
//-----------------------------------------------------------------------------
// General
//-----------------------------------------------------------------------------
function printl( text )
{
return print( text + "\n" );
}
function Msg( text )
{
return print( text );
}
function Assert( b, msg = null )
{
if ( b )
return;
if ( msg != null )
{
throw "Assertion failed: " + msg;
}
else
{
throw "Assertion failed";
}
}
//-----------------------------------------------------------------------------
// Documentation table
//-----------------------------------------------------------------------------
if ( developer() > 0 )
{
Documentation <-
{
classes = {}
functions = {}
instances = {}
}
function RetrieveNativeSignature( nativeFunction )
{
if ( nativeFunction in NativeFunctionSignatures )
{
return NativeFunctionSignatures[nativeFunction]
}
return "<unnamed>"
}
function RegisterFunctionDocumentation( func, name, signature, description )
{
if ( description.len() )
{
local b = ( description[0] == '#' );
if ( description[0] == '#' )
{
local colon = description.find( ":" );
if ( colon == null )
{
colon = description.len();
}
local alias = description.slice( 1, colon );
description = description.slice( colon + 1 );
name = alias;
signature = "#";
}
}
Documentation.functions[name] <- [ signature, description ]
}
function Document( symbolOrTable, itemIfSymbol = null, descriptionIfSymbol = null )
{
if ( typeof( symbolOrTable ) == "table" )
{
foreach( symbol, itemDescription in symbolOrTable )
{
Assert( typeof(symbol) == "string" )
Document( symbol, itemDescription[0], itemDescription[1] );
}
}
else
{
printl( symbolOrTable + ":" + itemIfSymbol.tostring() + "/" + descriptionIfSymbol );
}
}
function PrintHelp( string = "*", exact = false )
{
local matches = []
if ( string == "*" || !exact )
{
foreach( name, documentation in Documentation.functions )
{
if ( string != "*" && name.tolower().find( string.tolower() ) == null )
{
continue;
}
matches.append( name );
}
}
else if ( exact )
{
if ( string in Documentation.functions )
matches.append( string )
}
if ( matches.len() == 0 )
{
printl( "Symbol " + string + " not found" );
return;
}
matches.sort();
foreach( name in matches )
{
local result = name;
local documentation = Documentation.functions[name];
printl( "Function: " + name );
local signature;
if ( documentation[0] != "#" )
{
signature = documentation[0];
}
else
{
signature = GetFunctionSignature( this[name], name );
}
printl( "Signature: " + signature );
if ( documentation[1].len() )
printl( "Description: " + documentation[1] );
print( "\n" );
}
}
}
else
{
function RetrieveNativeSignature( nativeFunction ) { return "<unnamed>"; }
function Document( symbolOrTable, itemIfSymbol = null, descriptionIfSymbol = null ) {}
function PrintHelp( string = "*", exact = false ) {}
}
//-----------------------------------------------------------------------------
// VSquirrel support functions
//-----------------------------------------------------------------------------
function VSquirrel_OnCreateScope( name, outer )
{
local result;
if ( !(name in outer) )
{
result = outer[name] <- { __vname=name, __vrefs = 1 };
delegate outer : result;
}
else
{
result = outer[name];
result.__vrefs += 1;
}
return result;
}
function VSquirrel_OnReleaseScope( scope )
{
scope.__vrefs -= 1;
if ( scope.__vrefs < 0 )
{
throw "Bad reference counting on scope " + scope.__vname;
}
else if ( scope.__vrefs == 0 )
{
delete scope.parent[scope.__vname];
scope.__vname = null;
delegate null : scope;
}
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class CCallChainer
{
constructor( prefixString, scopeForThis = null )
{
prefix = prefixString;
if ( scopeForThis != null )
scope = scopeForThis;
else
scope = ::getroottable();
chains = {};
// Expose a bound global function to dispatch to this object
scope[ "Dispatch" + prefixString ] <- Call.bindenv( this );
}
function PostScriptExecute()
{
foreach( key, value in scope )
{
if ( typeof( value ) == "function" )
{
if ( key.find( prefix ) == 0 )
{
key = key.slice( prefix.len() );
if ( !(key in chains) )
{
//::print( "Creating new call chain " + key + "\n");
chains[key] <- [];
}
local chain = chains[key];
if ( !chain.len() || chain.top() != value )
{
chain.push( value );
//::print( "Added " + value + " to call chain " + key + "\n" );
}
}
}
}
}
function Call( event, ... )
{
if ( event in chains )
{
local chain = chains[event];
if ( chain.len() )
{
local i;
local args = [];
if ( vargc > 0 )
{
args.push( scope );
for ( i = 0; i < vargc; i++ )
{
args.push( vargv[i] );
}
}
for ( i = chain.len() - 1; i >= 0; i -= 1 )
{
local func = chain[i];
local result;
if ( !args.len() )
{
result = func();
}
else
{
result = func.acall( args );
}
if ( result != null && !result )
return false;
}
}
}
return true;
}
scope = null;
prefix = null;
chains = null;
};
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class CSimpleCallChainer
{
constructor( prefixString, scopeForThis = null, exactNameMatch = false )
{
prefix = prefixString;
if ( scopeForThis != null )
scope = scopeForThis;
else
scope = ::getroottable();
chain = [];
// Expose a bound global function to dispatch to this object
scope[ "Dispatch" + prefixString ] <- Call.bindenv( this );
exactMatch = exactNameMatch
}
function PostScriptExecute()
{
foreach( key, value in scope )
{
if ( typeof( value ) == "function" )
{
local foundMatch = false;
if ( exactMatch )
{
foundMatch = ( prefix == key );
}
else
{
foundMatch = ( key.find( prefix ) == 0 )
}
if ( foundMatch )
{
if ( !exactMatch )
key = key.slice( prefix.len() );
if ( !(chain) )
{
//::print( "Creating new call simple chain\n");
chain <- [];
}
if ( !chain.len() || chain != value )
{
chain.push( value );
//::print( "Added " + value + " to call chain.\n" );
}
}
}
}
}
function Call( ... )
{
if ( chain.len() )
{
local i;
local args = [];
if ( vargc > 0 )
{
args.push( scope );
for ( i = 0; i < vargc; i++ )
{
args.push( vargv[i] );
}
}
for ( i = chain.len() - 1; i >= 0; i -= 1 )
{
local func = chain[i];
local result;
if ( !args.len() )
{
result = func.pcall( scope );
}
else
{
result = func.pacall( scope, args );
}
if ( result != null && !result )
return false;
}
}
return true;
}
exactMatch = false
scope = null;
prefix = null;
chain = null;
};
//-----------------------------------------------------------------------------
// Late binding: allows a table to refer to parts of itself, it's children,
// it's owner, and then have the references fixed up after it's fully parsed
//
// Usage:
// lateBinder <- LateBinder();
// lateBinder.Begin( this );
//
// Test1 <-
// {
// Foo=1
// }
//
// Test2 <-
// {
// FooFoo = "I'm foo foo"
// BarBar="@Test1.Foo"
// SubTable = { boo=[bah, "@Test2.FooFoo", "@Test1.Foo"], booboo2={one=bah, two="@Test2.FooFoo", three="@Test1.Foo"} }
// booboo=[bah, "@Test2.FooFoo", "@Test1.Foo"]
// booboo2={one=bah, two="@Test2.FooFoo", three="@Test1.Foo"}
// bah=wha
// }
//
// lateBinder.End();
// delete lateBinder;
//
// When End() is called, all of the unresolved symbols in the tables and arrays will be resolved,
// any left unresolved will become a string prepended with '~', which later code can deal with
//-----------------------------------------------------------------------------
class LateBinder
{
// public:
function Begin( target, log = false )
{
m_log = log;
HookRootMetamethod( "_get", function( key ) { return "^" + key; } );
HookRootMetamethod( "_newslot", function( key, value ) { if ( typeof value == "table" ) { m_fixupSet.push( [ key, value ] ); this.rawset( key, value ); }; }.bindenv(this) );
m_targetTable = target;
Log( "Begin late bind on table " + m_targetTable );
}
function End()
{
UnhookRootMetamethod( "_get" );
UnhookRootMetamethod( "_newslot" );
Log( "End late bind on table " + m_targetTable );
foreach( subTablePair in m_fixupSet )
{
EstablishDelegation( m_targetTable, subTablePair[1] );
}
Log( "Begin resolution... " )
m_logIndent++;
local found = true;
while ( found )
{
foreach( subTablePair in m_fixupSet )
{
Log( subTablePair[0] + " = " );
Log( "{" );
if ( !Resolve( subTablePair[1], subTablePair[1], false ) )
{
found = false;
}
Log( "}" );
}
}
m_logIndent--;
foreach( subTablePair in m_fixupSet )
{
RemoveDelegation( subTablePair[1] );
}
Log( "...end resolution" );
}
// private:
function HookRootMetamethod( name, value )
{
local saved = null;
local roottable = getroottable();
if ( name in roottable )
{
saved = roottable[name];
}
roottable[name] <- value;
roottable["__saved" + name] <- saved;
}
function UnhookRootMetamethod( name )
{
local saveSlot = "__saved" + name;
local roottable = getroottable();
local saved = roottable[saveSlot];
if ( saved != null )
{
roottable[name] = saved;
}
else
{
delete roottable[name];
}
delete roottable[saveSlot];
}
function EstablishDelegation( parentTable, childTable )
{
delegate parentTable : childTable;
foreach( key, value in childTable )
{
local type = typeof value;
if ( type == "table" )
{
EstablishDelegation( childTable, value );
}
}
}
function RemoveDelegation( childTable )
{
delegate null : childTable;
foreach( key, value in childTable )
{
local type = typeof value;
if ( type == "table" )
{
RemoveDelegation( value );
}
}
}
function Resolve( lookupTable, subTableOrArray, throwException = false )
{
m_logIndent++;
local found = false;
foreach( key, value in subTableOrArray )
{
local type = typeof value;
if ( type == "string" )
{
if ( value.len() )
{
local unresolvedId = null;
local controlChar = value[0]
if ( controlChar == '^' )
{
found = true;
value = value.slice( 1 );
if ( value in lookupTable )
{
subTableOrArray[key] = lookupTable[value];
Log( key + " = " + lookupTable[value] + " <-- " + value );
}
else
{
subTableOrArray[key] = "~" + value;
unresolvedId = value;
Log( key + " = \"" + "~" + value + "\" (unresolved)" );
}
}
else if ( controlChar == '@' )
{
found = true;
local identifiers = [];
local iLast = 1;
local iNext;
while ( ( iNext = value.find( ".", iLast ) ) != null )
{
identifiers.push( value.slice( iLast, iNext ) );
iLast = iNext + 1;
}
identifiers.push( value.slice( iLast ) );
local depthSuccess = 0;
local result = lookupTable;
foreach( identifier in identifiers )
{
if ( identifier in result )
{
depthSuccess++;
result = result[identifier];
}
else
{
break;
}
}
if ( depthSuccess == identifiers.len() )
{
subTableOrArray[key] = result;
Log( key + " = " + result + " <-- " + value );
}
else
{
subTableOrArray[key] = "~" + value.slice( 1 );
unresolvedId = value;
Log( key + " = \"" + "~" + value + "\" (unresolved)" );
}
}
if ( unresolvedId != null )
{
if ( throwException )
{
local exception = "Unresolved symbol: " + bind + " in ";
foreach ( entry in m_bindNamesStack )
{
exception += entry;
exception += "."
}
exception += unresolvedId;
throw exception;
}
}
}
}
}
foreach( key, value in subTableOrArray )
{
local type = typeof value;
local isTable = ( type == "table" );
local isArray = ( type == "array" )
if ( isTable || isArray )
{
Log( key + " =" );
Log( isTable ? "{" : "[" );
m_bindNamesStack.push( key );
if ( Resolve( ( isTable ) ? value : lookupTable, value, throwException ) )
{
found = true;
}
m_bindNamesStack.pop();
Log( isTable ? "}" : "]" );
}
}
m_logIndent--;
return found;
}
function Log( string )
{
if ( m_log )
{
for ( local i = 0; i < m_logIndent; i++ )
{
print( " " );
}
printl( string );
}
}
m_targetTable = null;
m_fixupSet = [];
m_bindNamesStack = [];
m_log = false;
m_logIndent = 0;
}
@@ -0,0 +1,688 @@
static unsigned char g_Script_init[] = {
0x2f,0x2f,0x3d,0x3d,0x3d,0x09,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,
0x67,0x68,0x74,0x20,0xa9,0x20,0x32,0x30,0x30,0x38,0x2c,0x20,0x56,0x61,0x6c,0x76,0x65,0x20,0x43,0x6f,
0x72,0x70,0x6f,0x72,0x61,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,
0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x20,0x50,0x75,0x72,0x70,0x6f,0x73,0x65,0x3a,0x20,0x53,0x63,0x72,0x69,
0x70,0x74,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x6c,0x79,0x20,0x72,0x75,0x6e,0x20,0x61,0x66,0x74,
0x65,0x72,0x20,0x73,0x71,0x75,0x69,0x72,0x72,0x65,0x6c,0x20,0x56,0x4d,0x20,0x69,0x73,0x20,0x69,0x6e,
0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x64,0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x3d,0x3d,0x3d,0x3d,0x3d,
0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x0a,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x20,0x47,0x65,0x6e,
0x65,0x72,0x61,0x6c,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x72,0x69,0x6e,0x74,
0x6c,0x28,0x20,0x74,0x65,0x78,0x74,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
0x70,0x72,0x69,0x6e,0x74,0x28,0x20,0x74,0x65,0x78,0x74,0x20,0x2b,0x20,0x22,0x5c,0x6e,0x22,0x20,0x29,
0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x73,0x67,0x28,0x20,0x74,
0x65,0x78,0x74,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x69,0x6e,
0x74,0x28,0x20,0x74,0x65,0x78,0x74,0x20,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x41,0x73,0x73,0x65,0x72,0x74,0x28,0x20,0x62,0x2c,0x20,0x6d,0x73,0x67,0x20,0x3d,0x20,
0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x69,0x66,0x20,0x28,0x20,0x62,0x20,0x29,0x0a,0x09,
0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x09,0x09,0x0a,0x09,0x69,0x66,0x20,0x28,0x20,0x6d,0x73,
0x67,0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x74,0x68,0x72,
0x6f,0x77,0x20,0x22,0x41,0x73,0x73,0x65,0x72,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,
0x3a,0x20,0x22,0x20,0x2b,0x20,0x6d,0x73,0x67,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x65,0x6c,0x73,0x65,0x0a,
0x09,0x7b,0x0a,0x09,0x09,0x74,0x68,0x72,0x6f,0x77,0x20,0x22,0x41,0x73,0x73,0x65,0x72,0x74,0x69,0x6f,
0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x22,0x3b,0x0a,0x09,0x7d,0x0a,0x7d,0x0a,0x0a,0x2f,0x2f,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x20,
0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x0a,
0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,
0x0a,0x69,0x66,0x20,0x28,0x20,0x64,0x65,0x76,0x65,0x6c,0x6f,0x70,0x65,0x72,0x28,0x29,0x20,0x3e,0x20,
0x30,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,
0x20,0x3c,0x2d,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x63,0x6c,0x61,0x73,0x73,0x65,0x73,0x20,0x3d,0x20,0x7b,
0x7d,0x0a,0x09,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x09,
0x09,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x09,0x7d,0x0a,0x0a,
0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x4e,
0x61,0x74,0x69,0x76,0x65,0x53,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x28,0x20,0x6e,0x61,0x74,0x69,
0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x69,0x66,
0x20,0x28,0x20,0x6e,0x61,0x74,0x69,0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,
0x20,0x4e,0x61,0x74,0x69,0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x53,0x69,0x67,0x6e,0x61,
0x74,0x75,0x72,0x65,0x73,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x4e,0x61,0x74,0x69,0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x53,0x69,0x67,0x6e,
0x61,0x74,0x75,0x72,0x65,0x73,0x5b,0x6e,0x61,0x74,0x69,0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,
0x6e,0x5d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x3c,0x75,0x6e,
0x6e,0x61,0x6d,0x65,0x64,0x3e,0x22,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x44,
0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x66,0x75,0x6e,0x63,0x2c,0x20,
0x6e,0x61,0x6d,0x65,0x2c,0x20,0x73,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x2c,0x20,0x64,0x65,0x73,
0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,
0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,
0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x20,0x3d,0x20,0x28,0x20,
0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x20,0x3d,0x3d,0x20,0x27,0x23,
0x27,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,
0x74,0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x20,0x3d,0x3d,0x20,0x27,0x23,0x27,0x20,0x29,0x0a,0x09,0x09,0x09,
0x7b,0x0a,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6c,0x6f,0x6e,0x20,0x3d,0x20,
0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x2e,0x66,0x69,0x6e,0x64,0x28,0x20,0x22,0x3a,
0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x63,0x6f,0x6c,0x6f,0x6e,0x20,
0x3d,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,
0x09,0x63,0x6f,0x6c,0x6f,0x6e,0x20,0x3d,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,
0x2e,0x6c,0x65,0x6e,0x28,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x6c,0x6f,
0x63,0x61,0x6c,0x20,0x61,0x6c,0x69,0x61,0x73,0x20,0x3d,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,
0x69,0x6f,0x6e,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x31,0x2c,0x20,0x63,0x6f,0x6c,0x6f,0x6e,0x20,
0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x3d,
0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,
0x63,0x6f,0x6c,0x6f,0x6e,0x20,0x2b,0x20,0x31,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x6e,0x61,0x6d,
0x65,0x20,0x3d,0x20,0x61,0x6c,0x69,0x61,0x73,0x3b,0x0a,0x09,0x09,0x09,0x09,0x73,0x69,0x67,0x6e,0x61,
0x74,0x75,0x72,0x65,0x20,0x3d,0x20,0x22,0x23,0x22,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x66,0x75,0x6e,
0x63,0x74,0x69,0x6f,0x6e,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3c,0x2d,0x20,0x5b,0x20,0x73,0x69,
0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x2c,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,
0x20,0x5d,0x0a,0x09,0x7d,0x0a,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,0x6f,0x63,
0x75,0x6d,0x65,0x6e,0x74,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x4f,0x72,0x54,0x61,0x62,0x6c,0x65,
0x2c,0x20,0x69,0x74,0x65,0x6d,0x49,0x66,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x20,0x3d,0x20,0x6e,0x75,0x6c,
0x6c,0x2c,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x49,0x66,0x53,0x79,0x6d,0x62,
0x6f,0x6c,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x69,0x66,0x20,
0x28,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x4f,0x72,0x54,0x61,
0x62,0x6c,0x65,0x20,0x29,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65,0x22,0x20,0x29,0x0a,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,
0x6c,0x2c,0x20,0x69,0x74,0x65,0x6d,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x69,
0x6e,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x4f,0x72,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x0a,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x41,0x73,0x73,0x65,0x72,0x74,0x28,0x20,0x74,0x79,0x70,0x65,0x6f,
0x66,0x28,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x29,0x20,0x3d,0x3d,0x20,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,
0x22,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,
0x74,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x2c,0x20,0x69,0x74,0x65,0x6d,0x44,0x65,0x73,0x63,0x72,
0x69,0x70,0x74,0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x2c,0x20,0x69,0x74,0x65,0x6d,0x44,0x65,0x73,0x63,0x72,
0x69,0x70,0x74,0x69,0x6f,0x6e,0x5b,0x31,0x5d,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,
0x7d,0x0a,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x70,0x72,0x69,0x6e,
0x74,0x6c,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x4f,0x72,0x54,0x61,0x62,0x6c,0x65,0x20,0x2b,0x20,
0x22,0x3a,0x22,0x20,0x2b,0x20,0x69,0x74,0x65,0x6d,0x49,0x66,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x2e,0x74,
0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x29,0x20,0x2b,0x20,0x22,0x2f,0x22,0x20,0x2b,0x20,0x64,0x65,
0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x49,0x66,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x20,0x29,0x3b,
0x0a,0x09,0x09,0x7d,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,
0x50,0x72,0x69,0x6e,0x74,0x48,0x65,0x6c,0x70,0x28,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x3d,0x20,
0x22,0x2a,0x22,0x2c,0x20,0x65,0x78,0x61,0x63,0x74,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x29,
0x0a,0x09,0x7b,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x20,
0x3d,0x20,0x5b,0x5d,0x0a,0x09,0x09,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x73,0x74,0x72,0x69,0x6e,
0x67,0x20,0x3d,0x3d,0x20,0x22,0x2a,0x22,0x20,0x7c,0x7c,0x20,0x21,0x65,0x78,0x61,0x63,0x74,0x20,0x29,
0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6e,0x61,0x6d,
0x65,0x2c,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x20,
0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x73,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,
0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x21,0x3d,0x20,0x22,0x2a,0x22,0x20,0x26,0x26,0x20,0x6e,0x61,0x6d,
0x65,0x2e,0x74,0x6f,0x6c,0x6f,0x77,0x65,0x72,0x28,0x29,0x2e,0x66,0x69,0x6e,0x64,0x28,0x20,0x73,0x74,
0x72,0x69,0x6e,0x67,0x2e,0x74,0x6f,0x6c,0x6f,0x77,0x65,0x72,0x28,0x29,0x20,0x29,0x20,0x3d,0x3d,0x20,
0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x63,0x6f,
0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,
0x09,0x09,0x09,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x2e,0x61,0x70,0x70,0x65,0x6e,0x64,0x28,0x20,0x6e,
0x61,0x6d,0x65,0x20,0x29,0x3b,0x20,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x20,0x0a,0x09,0x09,
0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x20,0x65,0x78,0x61,0x63,0x74,0x20,0x29,0x0a,0x09,0x09,
0x7b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x20,
0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x73,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x2e,0x61,0x70,
0x70,0x65,0x6e,0x64,0x28,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x29,0x0a,0x09,0x09,0x7d,0x0a,0x09,
0x09,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x2e,0x6c,0x65,0x6e,
0x28,0x29,0x20,0x3d,0x3d,0x20,0x30,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x70,0x72,0x69,
0x6e,0x74,0x6c,0x28,0x20,0x22,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x20,0x22,0x20,0x2b,0x20,0x73,0x74,0x72,
0x69,0x6e,0x67,0x20,0x2b,0x20,0x22,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e,0x64,0x22,0x20,0x29,
0x3b,0x0a,0x09,0x09,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x0a,
0x09,0x09,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x2e,0x73,0x6f,0x72,0x74,0x28,0x29,0x3b,0x0a,0x09,0x09,
0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6e,0x61,0x6d,0x65,0x20,0x69,0x6e,0x20,
0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,
0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x09,0x09,
0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,
0x20,0x3d,0x20,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x66,0x75,0x6e,
0x63,0x74,0x69,0x6f,0x6e,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x0a,0x09,0x09,
0x09,0x70,0x72,0x69,0x6e,0x74,0x6c,0x28,0x20,0x22,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x3a,0x20,
0x20,0x20,0x20,0x22,0x20,0x2b,0x20,0x6e,0x61,0x6d,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x6c,0x6f,
0x63,0x61,0x6c,0x20,0x73,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,
0x20,0x28,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x20,
0x21,0x3d,0x20,0x22,0x23,0x22,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x73,0x69,
0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x20,0x3d,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,
0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x65,0x6c,0x73,0x65,
0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x73,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x20,
0x3d,0x20,0x47,0x65,0x74,0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x53,0x69,0x67,0x6e,0x61,0x74,0x75,
0x72,0x65,0x28,0x20,0x74,0x68,0x69,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x2c,0x20,0x6e,0x61,0x6d,0x65,
0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x70,0x72,0x69,0x6e,
0x74,0x6c,0x28,0x20,0x22,0x53,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x3a,0x20,0x20,0x20,0x22,0x20,
0x2b,0x20,0x73,0x69,0x67,0x6e,0x61,0x74,0x75,0x72,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,
0x20,0x28,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x31,0x5d,0x2e,
0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x70,0x72,0x69,0x6e,0x74,0x6c,0x28,0x20,
0x22,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x22,0x20,0x2b,0x20,0x64,0x6f,
0x63,0x75,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x5b,0x31,0x5d,0x20,0x29,0x3b,0x0a,0x09,0x09,
0x09,0x70,0x72,0x69,0x6e,0x74,0x28,0x20,0x22,0x5c,0x6e,0x22,0x20,0x29,0x3b,0x20,0x0a,0x09,0x09,0x7d,
0x0a,0x09,0x7d,0x0a,0x7d,0x0a,0x65,0x6c,0x73,0x65,0x0a,0x7b,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x52,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x4e,0x61,0x74,0x69,0x76,0x65,0x53,0x69,0x67,
0x6e,0x61,0x74,0x75,0x72,0x65,0x28,0x20,0x6e,0x61,0x74,0x69,0x76,0x65,0x46,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x29,0x20,0x7b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x3c,0x75,0x6e,0x6e,0x61,
0x6d,0x65,0x64,0x3e,0x22,0x3b,0x20,0x7d,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x44,
0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x28,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x4f,0x72,0x54,0x61,0x62,
0x6c,0x65,0x2c,0x20,0x69,0x74,0x65,0x6d,0x49,0x66,0x53,0x79,0x6d,0x62,0x6f,0x6c,0x20,0x3d,0x20,0x6e,
0x75,0x6c,0x6c,0x2c,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x49,0x66,0x53,0x79,
0x6d,0x62,0x6f,0x6c,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x20,0x7b,0x7d,0x0a,0x09,0x66,0x75,
0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x72,0x69,0x6e,0x74,0x48,0x65,0x6c,0x70,0x28,0x20,0x73,0x74,
0x72,0x69,0x6e,0x67,0x20,0x3d,0x20,0x22,0x2a,0x22,0x2c,0x20,0x65,0x78,0x61,0x63,0x74,0x20,0x3d,0x20,
0x66,0x61,0x6c,0x73,0x65,0x20,0x29,0x20,0x7b,0x7d,0x0a,0x7d,0x0a,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x20,0x56,0x53,0x71,
0x75,0x69,0x72,0x72,0x65,0x6c,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,
0x69,0x6f,0x6e,0x73,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x53,0x71,0x75,0x69,
0x72,0x72,0x65,0x6c,0x5f,0x4f,0x6e,0x43,0x72,0x65,0x61,0x74,0x65,0x53,0x63,0x6f,0x70,0x65,0x28,0x20,
0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6f,0x75,0x74,0x65,0x72,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x6c,0x6f,0x63,
0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x28,0x6e,
0x61,0x6d,0x65,0x20,0x69,0x6e,0x20,0x6f,0x75,0x74,0x65,0x72,0x29,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,
0x09,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x65,0x72,0x5b,0x6e,0x61,0x6d,0x65,
0x5d,0x20,0x3c,0x2d,0x20,0x7b,0x20,0x5f,0x5f,0x76,0x6e,0x61,0x6d,0x65,0x3d,0x6e,0x61,0x6d,0x65,0x2c,
0x20,0x5f,0x5f,0x76,0x72,0x65,0x66,0x73,0x20,0x3d,0x20,0x31,0x20,0x7d,0x3b,0x0a,0x09,0x09,0x64,0x65,
0x6c,0x65,0x67,0x61,0x74,0x65,0x20,0x6f,0x75,0x74,0x65,0x72,0x20,0x3a,0x20,0x72,0x65,0x73,0x75,0x6c,
0x74,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x72,0x65,0x73,
0x75,0x6c,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x65,0x72,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x3b,0x0a,0x09,
0x09,0x72,0x65,0x73,0x75,0x6c,0x74,0x2e,0x5f,0x5f,0x76,0x72,0x65,0x66,0x73,0x20,0x2b,0x3d,0x20,0x31,
0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,
0x0a,0x7d,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x56,0x53,0x71,0x75,0x69,0x72,0x72,
0x65,0x6c,0x5f,0x4f,0x6e,0x52,0x65,0x6c,0x65,0x61,0x73,0x65,0x53,0x63,0x6f,0x70,0x65,0x28,0x20,0x73,
0x63,0x6f,0x70,0x65,0x20,0x29,0x0a,0x7b,0x0a,0x09,0x73,0x63,0x6f,0x70,0x65,0x2e,0x5f,0x5f,0x76,0x72,
0x65,0x66,0x73,0x20,0x2d,0x3d,0x20,0x31,0x3b,0x0a,0x09,0x69,0x66,0x20,0x28,0x20,0x73,0x63,0x6f,0x70,
0x65,0x2e,0x5f,0x5f,0x76,0x72,0x65,0x66,0x73,0x20,0x3c,0x20,0x30,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,
0x09,0x74,0x68,0x72,0x6f,0x77,0x20,0x22,0x42,0x61,0x64,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,
0x65,0x20,0x63,0x6f,0x75,0x6e,0x74,0x69,0x6e,0x67,0x20,0x6f,0x6e,0x20,0x73,0x63,0x6f,0x70,0x65,0x20,
0x22,0x20,0x2b,0x20,0x73,0x63,0x6f,0x70,0x65,0x2e,0x5f,0x5f,0x76,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x09,
0x7d,0x0a,0x09,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x20,0x73,0x63,0x6f,0x70,0x65,0x2e,0x5f,
0x5f,0x76,0x72,0x65,0x66,0x73,0x20,0x3d,0x3d,0x20,0x30,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x64,
0x65,0x6c,0x65,0x74,0x65,0x20,0x73,0x63,0x6f,0x70,0x65,0x2e,0x70,0x61,0x72,0x65,0x6e,0x74,0x5b,0x73,
0x63,0x6f,0x70,0x65,0x2e,0x5f,0x5f,0x76,0x6e,0x61,0x6d,0x65,0x5d,0x3b,0x0a,0x09,0x09,0x73,0x63,0x6f,
0x70,0x65,0x2e,0x5f,0x5f,0x76,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x09,
0x09,0x64,0x65,0x6c,0x65,0x67,0x61,0x74,0x65,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x3a,0x20,0x73,0x63,0x6f,
0x70,0x65,0x3b,0x0a,0x09,0x7d,0x0a,0x7d,0x0a,0x0a,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x63,0x6c,0x61,0x73,0x73,0x20,
0x43,0x43,0x61,0x6c,0x6c,0x43,0x68,0x61,0x69,0x6e,0x65,0x72,0x0a,0x7b,0x0a,0x09,0x63,0x6f,0x6e,0x73,
0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,0x6e,
0x67,0x2c,0x20,0x73,0x63,0x6f,0x70,0x65,0x46,0x6f,0x72,0x54,0x68,0x69,0x73,0x20,0x3d,0x20,0x6e,0x75,
0x6c,0x6c,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x20,0x70,
0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,0x6e,0x67,0x3b,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,0x20,
0x73,0x63,0x6f,0x70,0x65,0x46,0x6f,0x72,0x54,0x68,0x69,0x73,0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,0x6c,
0x20,0x29,0x0a,0x09,0x09,0x09,0x73,0x63,0x6f,0x70,0x65,0x20,0x3d,0x20,0x73,0x63,0x6f,0x70,0x65,0x46,
0x6f,0x72,0x54,0x68,0x69,0x73,0x3b,0x0a,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,0x73,0x63,
0x6f,0x70,0x65,0x20,0x3d,0x20,0x3a,0x3a,0x67,0x65,0x74,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,
0x28,0x29,0x3b,0x0a,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x09,
0x09,0x0a,0x09,0x09,0x2f,0x2f,0x20,0x45,0x78,0x70,0x6f,0x73,0x65,0x20,0x61,0x20,0x62,0x6f,0x75,0x6e,
0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,
0x20,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x62,
0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x73,0x63,0x6f,0x70,0x65,0x5b,0x20,0x22,0x44,0x69,0x73,0x70,0x61,
0x74,0x63,0x68,0x22,0x20,0x2b,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,0x6e,0x67,0x20,
0x5d,0x20,0x3c,0x2d,0x20,0x43,0x61,0x6c,0x6c,0x2e,0x62,0x69,0x6e,0x64,0x65,0x6e,0x76,0x28,0x20,0x74,
0x68,0x69,0x73,0x20,0x29,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,
0x6e,0x20,0x50,0x6f,0x73,0x74,0x53,0x63,0x72,0x69,0x70,0x74,0x45,0x78,0x65,0x63,0x75,0x74,0x65,0x28,
0x29,0x20,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,
0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x69,0x6e,0x20,0x73,0x63,0x6f,0x70,0x65,0x20,0x29,0x0a,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x20,0x76,
0x61,0x6c,0x75,0x65,0x20,0x29,0x20,0x3d,0x3d,0x20,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,
0x20,0x29,0x20,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x6b,0x65,
0x79,0x2e,0x66,0x69,0x6e,0x64,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x29,0x20,0x3d,0x3d,0x20,
0x30,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x6b,0x65,0x79,0x20,0x3d,
0x20,0x6b,0x65,0x79,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x2e,0x6c,
0x65,0x6e,0x28,0x29,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x21,0x28,0x6b,0x65,0x79,0x20,0x69,0x6e,0x20,0x63,0x68,0x61,0x69,0x6e,0x73,0x29,
0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x3a,0x3a,
0x70,0x72,0x69,0x6e,0x74,0x28,0x20,0x22,0x43,0x72,0x65,0x61,0x74,0x69,0x6e,0x67,0x20,0x6e,0x65,0x77,
0x20,0x63,0x61,0x6c,0x6c,0x20,0x63,0x68,0x61,0x69,0x6e,0x20,0x22,0x20,0x2b,0x20,0x6b,0x65,0x79,0x20,
0x2b,0x20,0x22,0x5c,0x6e,0x22,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,
0x73,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x3c,0x2d,0x20,0x5b,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x68,
0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x68,0x61,0x69,0x6e,0x73,0x5b,0x6b,0x65,0x79,0x5d,0x3b,0x0a,0x09,
0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x63,0x68,0x61,0x69,
0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x7c,0x7c,0x20,0x63,0x68,0x61,0x69,0x6e,0x2e,0x74,0x6f,0x70,
0x28,0x29,0x20,0x21,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x76,
0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x3a,0x3a,0x70,0x72,
0x69,0x6e,0x74,0x28,0x20,0x22,0x41,0x64,0x64,0x65,0x64,0x20,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,
0x65,0x20,0x2b,0x20,0x22,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x6c,0x20,0x63,0x68,0x61,0x69,0x6e,0x20,
0x22,0x20,0x2b,0x20,0x6b,0x65,0x79,0x20,0x2b,0x20,0x22,0x5c,0x6e,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,
0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x43,0x61,0x6c,0x6c,0x28,
0x20,0x65,0x76,0x65,0x6e,0x74,0x2c,0x20,0x2e,0x2e,0x2e,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x69,0x6e,0x20,0x63,0x68,0x61,0x69,0x6e,0x73,0x20,
0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x68,0x61,0x69,0x6e,
0x20,0x3d,0x20,0x63,0x68,0x61,0x69,0x6e,0x73,0x5b,0x65,0x76,0x65,0x6e,0x74,0x5d,0x3b,0x0a,0x09,0x09,
0x09,0x69,0x66,0x20,0x28,0x20,0x63,0x68,0x61,0x69,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,
0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x72,0x67,0x73,0x20,0x3d,0x20,0x5b,0x5d,0x3b,0x0a,0x09,
0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x76,0x61,0x72,0x67,0x63,0x20,0x3e,0x20,0x30,0x20,0x29,0x0a,
0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x61,0x72,0x67,0x73,0x2e,0x70,0x75,0x73,0x68,
0x28,0x20,0x73,0x63,0x6f,0x70,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x72,0x20,
0x28,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x76,0x61,0x72,0x67,0x63,0x3b,0x20,
0x69,0x2b,0x2b,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x61,
0x72,0x67,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x76,0x61,0x72,0x67,0x76,0x5b,0x69,0x5d,0x20,0x29,
0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x66,
0x6f,0x72,0x20,0x28,0x20,0x69,0x20,0x3d,0x20,0x63,0x68,0x61,0x69,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,
0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3e,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x2d,0x3d,0x20,0x31,
0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,
0x66,0x75,0x6e,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x69,0x6e,0x5b,0x69,0x5d,0x3b,0x0a,0x09,0x09,0x09,
0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x09,0x09,0x09,0x09,
0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x61,0x72,0x67,0x73,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,
0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,
0x3d,0x20,0x66,0x75,0x6e,0x63,0x28,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,
0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x2e,0x61,0x63,0x61,0x6c,0x6c,0x28,
0x20,0x61,0x72,0x67,0x73,0x20,0x29,0x3b,0x20,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,
0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,
0x6c,0x20,0x26,0x26,0x20,0x21,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,
0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x0a,0x09,0x09,0x72,0x65,0x74,0x75,0x72,
0x6e,0x20,0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x73,0x63,0x6f,0x70,0x65,0x20,
0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x09,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x20,0x6e,0x75,
0x6c,0x6c,0x3b,0x0a,0x09,0x63,0x68,0x61,0x69,0x6e,0x73,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,
0x7d,0x3b,0x0a,0x0a,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x63,0x6c,0x61,0x73,0x73,0x20,0x43,0x53,0x69,0x6d,0x70,0x6c,
0x65,0x43,0x61,0x6c,0x6c,0x43,0x68,0x61,0x69,0x6e,0x65,0x72,0x0a,0x7b,0x0a,0x09,0x63,0x6f,0x6e,0x73,
0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,0x6e,
0x67,0x2c,0x20,0x73,0x63,0x6f,0x70,0x65,0x46,0x6f,0x72,0x54,0x68,0x69,0x73,0x20,0x3d,0x20,0x6e,0x75,
0x6c,0x6c,0x2c,0x20,0x65,0x78,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,
0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x70,0x72,0x65,0x66,0x69,0x78,
0x20,0x3d,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,0x6e,0x67,0x3b,0x0a,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x73,0x63,0x6f,0x70,0x65,0x46,0x6f,0x72,0x54,0x68,0x69,0x73,0x20,0x21,0x3d,0x20,
0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x09,0x09,0x73,0x63,0x6f,0x70,0x65,0x20,0x3d,0x20,0x73,0x63,
0x6f,0x70,0x65,0x46,0x6f,0x72,0x54,0x68,0x69,0x73,0x3b,0x0a,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,
0x09,0x09,0x73,0x63,0x6f,0x70,0x65,0x20,0x3d,0x20,0x3a,0x3a,0x67,0x65,0x74,0x72,0x6f,0x6f,0x74,0x74,
0x61,0x62,0x6c,0x65,0x28,0x29,0x3b,0x0a,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,0x20,0x3d,0x20,0x5b,0x5d,
0x3b,0x0a,0x09,0x09,0x0a,0x09,0x09,0x2f,0x2f,0x20,0x45,0x78,0x70,0x6f,0x73,0x65,0x20,0x61,0x20,0x62,
0x6f,0x75,0x6e,0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,
0x20,0x74,0x6f,0x20,0x64,0x69,0x73,0x70,0x61,0x74,0x63,0x68,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,
0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x0a,0x09,0x09,0x73,0x63,0x6f,0x70,0x65,0x5b,0x20,0x22,0x44,0x69,
0x73,0x70,0x61,0x74,0x63,0x68,0x22,0x20,0x2b,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x53,0x74,0x72,0x69,
0x6e,0x67,0x20,0x5d,0x20,0x3c,0x2d,0x20,0x43,0x61,0x6c,0x6c,0x2e,0x62,0x69,0x6e,0x64,0x65,0x6e,0x76,
0x28,0x20,0x74,0x68,0x69,0x73,0x20,0x29,0x3b,0x0a,0x09,0x09,0x0a,0x09,0x09,0x65,0x78,0x61,0x63,0x74,
0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x65,0x78,0x61,0x63,0x74,0x4e,0x61,0x6d,0x65,0x4d,0x61,0x74,
0x63,0x68,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x50,0x6f,
0x73,0x74,0x53,0x63,0x72,0x69,0x70,0x74,0x45,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x29,0x20,0x0a,0x09,
0x7b,0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,
0x6c,0x75,0x65,0x20,0x69,0x6e,0x20,0x73,0x63,0x6f,0x70,0x65,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,
0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,
0x20,0x29,0x20,0x3d,0x3d,0x20,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22,0x20,0x29,0x20,0x0a,
0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x6f,0x75,0x6e,0x64,
0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x65,0x78,0x61,0x63,0x74,0x4d,0x61,0x74,0x63,0x68,0x20,0x29,0x0a,0x09,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,
0x20,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x3d,0x20,0x6b,0x65,0x79,0x20,0x29,0x3b,0x0a,
0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x28,
0x20,0x6b,0x65,0x79,0x2e,0x66,0x69,0x6e,0x64,0x28,0x20,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x29,0x20,
0x3d,0x3d,0x20,0x30,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x0a,
0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x66,0x6f,0x75,0x6e,0x64,0x4d,0x61,0x74,0x63,0x68,0x20,
0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x65,
0x78,0x61,0x63,0x74,0x4d,0x61,0x74,0x63,0x68,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x6b,0x65,
0x79,0x20,0x3d,0x20,0x6b,0x65,0x79,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x70,0x72,0x65,0x66,0x69,
0x78,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,
0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x28,0x63,0x68,0x61,0x69,0x6e,0x29,0x20,0x29,0x0a,0x09,0x09,
0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x3a,0x3a,0x70,0x72,0x69,0x6e,0x74,
0x28,0x20,0x22,0x43,0x72,0x65,0x61,0x74,0x69,0x6e,0x67,0x20,0x6e,0x65,0x77,0x20,0x63,0x61,0x6c,0x6c,
0x20,0x73,0x69,0x6d,0x70,0x6c,0x65,0x20,0x63,0x68,0x61,0x69,0x6e,0x5c,0x6e,0x22,0x29,0x3b,0x0a,0x09,
0x09,0x09,0x09,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,0x20,0x3c,0x2d,0x20,0x5b,0x5d,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,
0x20,0x21,0x63,0x68,0x61,0x69,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x7c,0x7c,0x20,0x63,0x68,0x61,
0x69,0x6e,0x20,0x21,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x63,0x68,0x61,0x69,0x6e,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x76,
0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x2f,0x2f,0x3a,0x3a,0x70,0x72,
0x69,0x6e,0x74,0x28,0x20,0x22,0x41,0x64,0x64,0x65,0x64,0x20,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,
0x65,0x20,0x2b,0x20,0x22,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x6c,0x20,0x63,0x68,0x61,0x69,0x6e,0x2e,
0x5c,0x6e,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,
0x69,0x6f,0x6e,0x20,0x43,0x61,0x6c,0x6c,0x28,0x20,0x2e,0x2e,0x2e,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,
0x09,0x69,0x66,0x20,0x28,0x20,0x63,0x68,0x61,0x69,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,
0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x3b,0x0a,0x09,0x09,0x09,0x6c,
0x6f,0x63,0x61,0x6c,0x20,0x61,0x72,0x67,0x73,0x20,0x3d,0x20,0x5b,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x76,0x61,0x72,0x67,0x63,0x20,0x3e,0x20,0x30,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x61,0x72,0x67,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x73,0x63,0x6f,0x70,
0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x66,0x6f,0x72,0x20,0x28,0x20,0x69,0x20,0x3d,0x20,0x30,
0x3b,0x20,0x69,0x20,0x3c,0x20,0x76,0x61,0x72,0x67,0x63,0x3b,0x20,0x69,0x2b,0x2b,0x20,0x29,0x0a,0x09,
0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x61,0x72,0x67,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,
0x20,0x76,0x61,0x72,0x67,0x76,0x5b,0x69,0x5d,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,
0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x66,0x6f,0x72,0x20,0x28,0x20,0x69,0x20,0x3d,0x20,0x63,0x68,0x61,
0x69,0x6e,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3e,0x3d,0x20,0x30,
0x3b,0x20,0x69,0x20,0x2d,0x3d,0x20,0x31,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,
0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x69,0x6e,0x5b,0x69,
0x5d,0x3b,0x0a,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,
0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x61,0x72,0x67,0x73,0x2e,0x6c,0x65,0x6e,0x28,
0x29,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x72,0x65,0x73,0x75,0x6c,
0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x2e,0x70,0x63,0x61,0x6c,0x6c,0x28,0x20,0x73,0x63,0x6f,0x70,
0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,
0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,
0x66,0x75,0x6e,0x63,0x2e,0x70,0x61,0x63,0x61,0x6c,0x6c,0x28,0x20,0x73,0x63,0x6f,0x70,0x65,0x2c,0x20,
0x61,0x72,0x67,0x73,0x20,0x29,0x3b,0x20,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x26,
0x26,0x20,0x21,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x72,0x65,0x74,
0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,
0x09,0x09,0x0a,0x09,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x7d,
0x0a,0x09,0x0a,0x09,0x65,0x78,0x61,0x63,0x74,0x4d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x66,0x61,0x6c,
0x73,0x65,0x0a,0x09,0x73,0x63,0x6f,0x70,0x65,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x09,0x70,
0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x09,0x63,0x68,0x61,0x69,0x6e,
0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2f,0x2f,0x20,0x4c,0x61,0x74,0x65,
0x20,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x3a,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x61,0x20,0x74,
0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x72,0x65,0x66,0x65,0x72,0x20,0x74,0x6f,0x20,0x70,0x61,0x72,
0x74,0x73,0x20,0x6f,0x66,0x20,0x69,0x74,0x73,0x65,0x6c,0x66,0x2c,0x20,0x69,0x74,0x27,0x73,0x20,0x63,
0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x0a,0x2f,0x2f,0x20,0x69,0x74,0x27,0x73,0x20,0x6f,0x77,0x6e,
0x65,0x72,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x68,
0x65,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x66,0x69,0x78,0x65,0x64,0x20,0x75,
0x70,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x69,0x74,0x27,0x73,0x20,0x66,0x75,0x6c,0x6c,0x79,0x20,0x70,
0x61,0x72,0x73,0x65,0x64,0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x20,0x55,0x73,0x61,0x67,0x65,0x3a,0x0a,0x2f,
0x2f,0x20,0x20,0x20,0x20,0x6c,0x61,0x74,0x65,0x42,0x69,0x6e,0x64,0x65,0x72,0x20,0x3c,0x2d,0x20,0x4c,
0x61,0x74,0x65,0x42,0x69,0x6e,0x64,0x65,0x72,0x28,0x29,0x3b,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x6c,
0x61,0x74,0x65,0x42,0x69,0x6e,0x64,0x65,0x72,0x2e,0x42,0x65,0x67,0x69,0x6e,0x28,0x20,0x74,0x68,0x69,
0x73,0x20,0x29,0x3b,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x54,0x65,
0x73,0x74,0x31,0x20,0x3c,0x2d,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x7b,0x20,0x20,0x20,0x0a,0x2f,0x2f,
0x20,0x09,0x20,0x20,0x20,0x46,0x6f,0x6f,0x3d,0x31,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x7d,0x20,0x20,
0x20,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x54,0x65,0x73,0x74,0x32,
0x20,0x3c,0x2d,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x7b,0x20,0x20,0x20,0x0a,0x2f,0x2f,0x20,0x09,0x20,
0x20,0x20,0x46,0x6f,0x6f,0x46,0x6f,0x6f,0x20,0x3d,0x20,0x22,0x49,0x27,0x6d,0x20,0x66,0x6f,0x6f,0x20,
0x66,0x6f,0x6f,0x22,0x0a,0x2f,0x2f,0x20,0x09,0x20,0x20,0x20,0x42,0x61,0x72,0x42,0x61,0x72,0x3d,0x22,
0x40,0x54,0x65,0x73,0x74,0x31,0x2e,0x46,0x6f,0x6f,0x22,0x0a,0x2f,0x2f,0x20,0x09,0x20,0x20,0x20,0x53,
0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x7b,0x20,0x62,0x6f,0x6f,0x3d,0x5b,0x62,0x61,0x68,
0x2c,0x20,0x22,0x40,0x54,0x65,0x73,0x74,0x32,0x2e,0x46,0x6f,0x6f,0x46,0x6f,0x6f,0x22,0x2c,0x20,0x22,
0x40,0x54,0x65,0x73,0x74,0x31,0x2e,0x46,0x6f,0x6f,0x22,0x5d,0x2c,0x20,0x62,0x6f,0x6f,0x62,0x6f,0x6f,
0x32,0x3d,0x7b,0x6f,0x6e,0x65,0x3d,0x62,0x61,0x68,0x2c,0x20,0x74,0x77,0x6f,0x3d,0x22,0x40,0x54,0x65,
0x73,0x74,0x32,0x2e,0x46,0x6f,0x6f,0x46,0x6f,0x6f,0x22,0x2c,0x20,0x74,0x68,0x72,0x65,0x65,0x3d,0x22,
0x40,0x54,0x65,0x73,0x74,0x31,0x2e,0x46,0x6f,0x6f,0x22,0x7d,0x20,0x7d,0x0a,0x2f,0x2f,0x20,0x09,0x20,
0x20,0x20,0x62,0x6f,0x6f,0x62,0x6f,0x6f,0x3d,0x5b,0x62,0x61,0x68,0x2c,0x20,0x22,0x40,0x54,0x65,0x73,
0x74,0x32,0x2e,0x46,0x6f,0x6f,0x46,0x6f,0x6f,0x22,0x2c,0x20,0x22,0x40,0x54,0x65,0x73,0x74,0x31,0x2e,
0x46,0x6f,0x6f,0x22,0x5d,0x0a,0x2f,0x2f,0x20,0x09,0x20,0x20,0x20,0x62,0x6f,0x6f,0x62,0x6f,0x6f,0x32,
0x3d,0x7b,0x6f,0x6e,0x65,0x3d,0x62,0x61,0x68,0x2c,0x20,0x74,0x77,0x6f,0x3d,0x22,0x40,0x54,0x65,0x73,
0x74,0x32,0x2e,0x46,0x6f,0x6f,0x46,0x6f,0x6f,0x22,0x2c,0x20,0x74,0x68,0x72,0x65,0x65,0x3d,0x22,0x40,
0x54,0x65,0x73,0x74,0x31,0x2e,0x46,0x6f,0x6f,0x22,0x7d,0x0a,0x2f,0x2f,0x20,0x09,0x20,0x20,0x20,0x62,
0x61,0x68,0x3d,0x77,0x68,0x61,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x7d,0x20,0x20,0x20,0x0a,0x2f,0x2f,
0x20,0x20,0x20,0x20,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x6c,0x61,0x74,0x65,0x42,0x69,0x6e,0x64,0x65,
0x72,0x2e,0x45,0x6e,0x64,0x28,0x29,0x3b,0x0a,0x2f,0x2f,0x20,0x20,0x20,0x20,0x64,0x65,0x6c,0x65,0x74,
0x65,0x20,0x6c,0x61,0x74,0x65,0x42,0x69,0x6e,0x64,0x65,0x72,0x3b,0x0a,0x2f,0x2f,0x0a,0x2f,0x2f,0x20,
0x57,0x68,0x65,0x6e,0x20,0x45,0x6e,0x64,0x28,0x29,0x20,0x69,0x73,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,
0x2c,0x20,0x61,0x6c,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,
0x76,0x65,0x64,0x20,0x73,0x79,0x6d,0x62,0x6f,0x6c,0x73,0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x74,
0x61,0x62,0x6c,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x61,0x72,0x72,0x61,0x79,0x73,0x20,0x77,0x69,0x6c,
0x6c,0x20,0x62,0x65,0x20,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x2c,0x0a,0x2f,0x2f,0x20,0x61,0x6e,
0x79,0x20,0x6c,0x65,0x66,0x74,0x20,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x20,0x77,0x69,
0x6c,0x6c,0x20,0x62,0x65,0x63,0x6f,0x6d,0x65,0x20,0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x70,
0x72,0x65,0x70,0x65,0x6e,0x64,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x27,0x7e,0x27,0x2c,0x20,0x77,
0x68,0x69,0x63,0x68,0x20,0x6c,0x61,0x74,0x65,0x72,0x20,0x63,0x6f,0x64,0x65,0x20,0x63,0x61,0x6e,0x20,
0x64,0x65,0x61,0x6c,0x20,0x77,0x69,0x74,0x68,0x0a,0x2f,0x2f,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x63,0x6c,0x61,0x73,0x73,0x20,0x4c,0x61,0x74,
0x65,0x42,0x69,0x6e,0x64,0x65,0x72,0x0a,0x7b,0x0a,0x09,0x2f,0x2f,0x20,0x70,0x75,0x62,0x6c,0x69,0x63,
0x3a,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x42,0x65,0x67,0x69,0x6e,0x28,0x20,0x74,
0x61,0x72,0x67,0x65,0x74,0x2c,0x20,0x6c,0x6f,0x67,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x29,
0x0a,0x09,0x7b,0x0a,0x09,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x20,0x3d,0x20,0x6c,0x6f,0x67,0x3b,0x0a,0x09,
0x09,0x0a,0x09,0x09,0x48,0x6f,0x6f,0x6b,0x52,0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,
0x6f,0x64,0x28,0x20,0x22,0x5f,0x67,0x65,0x74,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,
0x28,0x20,0x6b,0x65,0x79,0x20,0x29,0x20,0x7b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x5e,0x22,
0x20,0x2b,0x20,0x6b,0x65,0x79,0x3b,0x20,0x7d,0x20,0x29,0x3b,0x0a,0x09,0x09,0x48,0x6f,0x6f,0x6b,0x52,
0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x28,0x20,0x22,0x5f,0x6e,0x65,0x77,
0x73,0x6c,0x6f,0x74,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x20,0x6b,0x65,0x79,
0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x20,0x7b,0x20,0x69,0x66,0x20,0x28,0x20,0x74,0x79,0x70,
0x65,0x6f,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65,0x22,
0x20,0x29,0x20,0x7b,0x20,0x6d,0x5f,0x66,0x69,0x78,0x75,0x70,0x53,0x65,0x74,0x2e,0x70,0x75,0x73,0x68,
0x28,0x20,0x5b,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x5d,0x20,0x29,0x3b,0x20,
0x74,0x68,0x69,0x73,0x2e,0x72,0x61,0x77,0x73,0x65,0x74,0x28,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,
0x6c,0x75,0x65,0x20,0x29,0x3b,0x20,0x7d,0x3b,0x20,0x20,0x7d,0x2e,0x62,0x69,0x6e,0x64,0x65,0x6e,0x76,
0x28,0x74,0x68,0x69,0x73,0x29,0x20,0x29,0x3b,0x0a,0x09,0x09,0x6d,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,
0x54,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x3b,0x0a,0x09,0x09,0x0a,0x09,
0x09,0x4c,0x6f,0x67,0x28,0x20,0x22,0x42,0x65,0x67,0x69,0x6e,0x20,0x6c,0x61,0x74,0x65,0x20,0x62,0x69,
0x6e,0x64,0x20,0x6f,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x22,0x20,0x2b,0x20,0x6d,0x5f,0x74,0x61,
0x72,0x67,0x65,0x74,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,
0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x6e,0x64,0x28,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x55,
0x6e,0x68,0x6f,0x6f,0x6b,0x52,0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x28,
0x20,0x22,0x5f,0x67,0x65,0x74,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x55,0x6e,0x68,0x6f,0x6f,0x6b,0x52,
0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x28,0x20,0x22,0x5f,0x6e,0x65,0x77,
0x73,0x6c,0x6f,0x74,0x22,0x20,0x29,0x3b,0x0a,0x0a,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x22,0x45,0x6e,
0x64,0x20,0x6c,0x61,0x74,0x65,0x20,0x62,0x69,0x6e,0x64,0x20,0x6f,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,
0x20,0x22,0x20,0x2b,0x20,0x6d,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,
0x3b,0x0a,0x09,0x09,0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x73,0x75,0x62,0x54,
0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x20,0x69,0x6e,0x20,0x6d,0x5f,0x66,0x69,0x78,0x75,0x70,0x53,
0x65,0x74,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x45,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,
0x68,0x44,0x65,0x6c,0x65,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x6d,0x5f,0x74,0x61,0x72,0x67,0x65,
0x74,0x54,0x61,0x62,0x6c,0x65,0x2c,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,
0x5b,0x31,0x5d,0x20,0x29,0x3b,0x0a,0x09,0x09,0x7d,0x0a,0x0a,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x22,
0x42,0x65,0x67,0x69,0x6e,0x20,0x72,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x2e,0x2e,0x2e,0x20,
0x22,0x20,0x29,0x0a,0x09,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x49,0x6e,0x64,0x65,0x6e,0x74,0x2b,0x2b,0x3b,
0x0a,0x09,0x09,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x20,
0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x09,0x0a,0x09,0x09,0x77,0x68,0x69,0x6c,0x65,0x20,0x28,0x20,0x66,
0x6f,0x75,0x6e,0x64,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,
0x68,0x28,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x20,0x69,0x6e,0x20,0x6d,
0x5f,0x66,0x69,0x78,0x75,0x70,0x53,0x65,0x74,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,
0x09,0x4c,0x6f,0x67,0x28,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x5b,0x30,
0x5d,0x20,0x2b,0x20,0x22,0x20,0x3d,0x20,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,
0x28,0x20,0x22,0x7b,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x21,0x52,
0x65,0x73,0x6f,0x6c,0x76,0x65,0x28,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,
0x5b,0x31,0x5d,0x2c,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x5b,0x31,0x5d,
0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x29,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x22,0x7d,0x22,0x20,0x29,0x3b,0x0a,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x0a,0x09,0x09,0x6d,0x5f,0x6c,0x6f,0x67,
0x49,0x6e,0x64,0x65,0x6e,0x74,0x2d,0x2d,0x3b,0x0a,0x09,0x09,0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,
0x63,0x68,0x28,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x20,0x69,0x6e,0x20,
0x6d,0x5f,0x66,0x69,0x78,0x75,0x70,0x53,0x65,0x74,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,
0x52,0x65,0x6d,0x6f,0x76,0x65,0x44,0x65,0x6c,0x65,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x73,0x75,
0x62,0x54,0x61,0x62,0x6c,0x65,0x50,0x61,0x69,0x72,0x5b,0x31,0x5d,0x20,0x29,0x3b,0x0a,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x0a,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x22,0x2e,0x2e,0x2e,0x65,0x6e,0x64,0x20,0x72,
0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x22,0x20,0x29,0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x09,0x0a,
0x09,0x2f,0x2f,0x20,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3a,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x48,0x6f,0x6f,0x6b,0x52,0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,
0x64,0x28,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x0a,0x09,0x7b,0x0a,
0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x61,0x76,0x65,0x64,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,
0x3b,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x20,
0x3d,0x20,0x67,0x65,0x74,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x28,0x29,0x3b,0x0a,0x09,0x09,
0x69,0x66,0x20,0x28,0x20,0x6e,0x61,0x6d,0x65,0x20,0x69,0x6e,0x20,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,
0x6c,0x65,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x73,0x61,0x76,0x65,0x64,0x20,0x3d,0x20,
0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x3b,0x0a,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3c,
0x2d,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,
0x5b,0x22,0x5f,0x5f,0x73,0x61,0x76,0x65,0x64,0x22,0x20,0x2b,0x20,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3c,
0x2d,0x20,0x73,0x61,0x76,0x65,0x64,0x3b,0x0a,0x09,0x7d,0x0a,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,
0x6f,0x6e,0x20,0x55,0x6e,0x68,0x6f,0x6f,0x6b,0x52,0x6f,0x6f,0x74,0x4d,0x65,0x74,0x61,0x6d,0x65,0x74,
0x68,0x6f,0x64,0x28,0x20,0x6e,0x61,0x6d,0x65,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x6c,0x6f,0x63,
0x61,0x6c,0x20,0x73,0x61,0x76,0x65,0x53,0x6c,0x6f,0x74,0x20,0x3d,0x20,0x22,0x5f,0x5f,0x73,0x61,0x76,
0x65,0x64,0x22,0x20,0x2b,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,
0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x67,0x65,0x74,0x72,0x6f,0x6f,0x74,0x74,
0x61,0x62,0x6c,0x65,0x28,0x29,0x3b,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x61,0x76,0x65,
0x64,0x20,0x3d,0x20,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x5b,0x73,0x61,0x76,0x65,0x53,0x6c,
0x6f,0x74,0x5d,0x3b,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x73,0x61,0x76,0x65,0x64,0x20,0x21,0x3d,
0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x72,0x6f,0x6f,0x74,0x74,
0x61,0x62,0x6c,0x65,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x73,0x61,0x76,0x65,0x64,0x3b,0x0a,
0x09,0x09,0x7d,0x0a,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x64,0x65,
0x6c,0x65,0x74,0x65,0x20,0x72,0x6f,0x6f,0x74,0x74,0x61,0x62,0x6c,0x65,0x5b,0x6e,0x61,0x6d,0x65,0x5d,
0x3b,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x64,0x65,0x6c,0x65,0x74,0x65,0x20,0x72,0x6f,0x6f,0x74,0x74,
0x61,0x62,0x6c,0x65,0x5b,0x73,0x61,0x76,0x65,0x53,0x6c,0x6f,0x74,0x5d,0x3b,0x0a,0x09,0x7d,0x0a,0x0a,
0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x45,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,0x68,0x44,
0x65,0x6c,0x65,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x54,0x61,0x62,
0x6c,0x65,0x2c,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x0a,0x09,0x7b,0x0a,
0x09,0x09,0x64,0x65,0x6c,0x65,0x67,0x61,0x74,0x65,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x54,0x61,0x62,
0x6c,0x65,0x20,0x3a,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x3b,0x0a,0x09,0x09,0x0a,
0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,
0x65,0x20,0x69,0x6e,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x0a,0x09,0x09,
0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x79,
0x70,0x65,0x6f,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,
0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65,0x22,0x20,0x29,0x0a,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x45,0x73,0x74,0x61,0x62,0x6c,0x69,0x73,0x68,0x44,0x65,0x6c,0x65,
0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x2c,0x20,
0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x7d,
0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x65,0x6d,0x6f,0x76,0x65,0x44,
0x65,0x6c,0x65,0x67,0x61,0x74,0x69,0x6f,0x6e,0x28,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,
0x65,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x64,0x65,0x6c,0x65,0x67,0x61,0x74,0x65,0x20,0x6e,0x75,
0x6c,0x6c,0x20,0x3a,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x3b,0x0a,0x09,0x09,0x0a,
0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,
0x65,0x20,0x69,0x6e,0x20,0x63,0x68,0x69,0x6c,0x64,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x0a,0x09,0x09,
0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x79,
0x70,0x65,0x6f,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,
0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65,0x22,0x20,0x29,0x0a,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x52,0x65,0x6d,0x6f,0x76,0x65,0x44,0x65,0x6c,0x65,0x67,0x61,0x74,
0x69,0x6f,0x6e,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,
0x09,0x7d,0x0a,0x09,0x7d,0x0a,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x52,0x65,0x73,
0x6f,0x6c,0x76,0x65,0x28,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x54,0x61,0x62,0x6c,0x65,0x2c,0x20,0x73,
0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,0x72,0x41,0x72,0x72,0x61,0x79,0x2c,0x20,0x74,0x68,0x72,0x6f,
0x77,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x29,
0x0a,0x09,0x7b,0x0a,0x09,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x49,0x6e,0x64,0x65,0x6e,0x74,0x2b,0x2b,0x3b,
0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x20,0x66,0x61,0x6c,
0x73,0x65,0x3b,0x0a,0x09,0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,
0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x69,0x6e,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,
0x72,0x41,0x72,0x72,0x61,0x79,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,
0x6c,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x76,0x61,0x6c,0x75,
0x65,0x3b,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,
0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x69,
0x66,0x20,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,0x09,0x09,
0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x6e,0x72,0x65,0x73,
0x6f,0x6c,0x76,0x65,0x64,0x49,0x64,0x20,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x3b,0x0a,0x09,0x09,0x09,0x09,
0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x43,0x68,0x61,0x72,0x20,0x3d,
0x20,0x76,0x61,0x6c,0x75,0x65,0x5b,0x30,0x5d,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,
0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x43,0x68,0x61,0x72,0x20,0x3d,0x3d,0x20,0x27,0x5e,0x27,0x20,0x29,
0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,0x20,
0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x76,0x61,0x6c,0x75,0x65,0x20,
0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x31,0x20,0x29,0x3b,0x0a,
0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x69,0x6e,0x20,
0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,0x72,0x41,
0x72,0x72,0x61,0x79,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x3d,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x54,0x61,
0x62,0x6c,0x65,0x5b,0x76,0x61,0x6c,0x75,0x65,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x4c,
0x6f,0x67,0x28,0x20,0x6b,0x65,0x79,0x20,0x2b,0x20,0x22,0x20,0x3d,0x20,0x22,0x20,0x2b,0x20,0x6c,0x6f,
0x6f,0x6b,0x75,0x70,0x54,0x61,0x62,0x6c,0x65,0x5b,0x76,0x61,0x6c,0x75,0x65,0x5d,0x20,0x2b,0x20,0x22,
0x20,0x3c,0x2d,0x2d,0x20,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,
0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,
0x4f,0x72,0x41,0x72,0x72,0x61,0x79,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x3d,0x20,0x22,0x7e,0x22,0x20,0x2b,
0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x75,0x6e,0x72,0x65,0x73,
0x6f,0x6c,0x76,0x65,0x64,0x49,0x64,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,
0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x6b,0x65,0x79,0x20,0x2b,0x20,0x22,0x20,0x3d,0x20,0x5c,
0x22,0x22,0x20,0x2b,0x20,0x22,0x7e,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2b,0x20,0x22,
0x5c,0x22,0x20,0x28,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x29,0x22,0x20,0x29,0x3b,0x0a,
0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,
0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x20,0x63,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x43,0x68,0x61,
0x72,0x20,0x3d,0x3d,0x20,0x27,0x40,0x27,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x09,
0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,
0x73,0x20,0x3d,0x20,0x5b,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,
0x69,0x4c,0x61,0x73,0x74,0x20,0x3d,0x20,0x31,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,
0x61,0x6c,0x20,0x69,0x4e,0x65,0x78,0x74,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x77,0x68,0x69,0x6c,
0x65,0x20,0x28,0x20,0x28,0x20,0x69,0x4e,0x65,0x78,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,
0x66,0x69,0x6e,0x64,0x28,0x20,0x22,0x2e,0x22,0x2c,0x20,0x69,0x4c,0x61,0x73,0x74,0x20,0x29,0x20,0x29,
0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,
0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x73,0x2e,0x70,0x75,
0x73,0x68,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x69,0x4c,0x61,
0x73,0x74,0x2c,0x20,0x69,0x4e,0x65,0x78,0x74,0x20,0x29,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,
0x09,0x09,0x69,0x4c,0x61,0x73,0x74,0x20,0x3d,0x20,0x69,0x4e,0x65,0x78,0x74,0x20,0x2b,0x20,0x31,0x3b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x64,0x65,0x6e,0x74,
0x69,0x66,0x69,0x65,0x72,0x73,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x73,
0x6c,0x69,0x63,0x65,0x28,0x20,0x69,0x4c,0x61,0x73,0x74,0x20,0x29,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,
0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x70,0x74,
0x68,0x53,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x6c,0x6f,0x6f,0x6b,0x75,
0x70,0x54,0x61,0x62,0x6c,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,
0x68,0x28,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x20,0x69,0x6e,0x20,0x69,0x64,0x65,
0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x73,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,
0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,
0x72,0x20,0x69,0x6e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x64,0x65,0x70,0x74,0x68,0x53,0x75,0x63,0x63,
0x65,0x73,0x73,0x2b,0x2b,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x72,0x65,0x73,0x75,0x6c,
0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,
0x72,0x5d,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x09,0x09,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,
0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x64,0x65,0x70,
0x74,0x68,0x53,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x3d,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,
0x69,0x65,0x72,0x73,0x2e,0x6c,0x65,0x6e,0x28,0x29,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,0x72,0x41,0x72,
0x72,0x61,0x79,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x3b,0x0a,0x09,
0x09,0x09,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x6b,0x65,0x79,0x20,0x2b,0x20,0x22,0x20,0x3d,
0x20,0x22,0x20,0x2b,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x20,0x22,0x20,0x3c,0x2d,0x2d,0x20,
0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x65,0x6c,0x73,0x65,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,
0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,0x72,0x41,0x72,0x72,
0x61,0x79,0x5b,0x6b,0x65,0x79,0x5d,0x20,0x3d,0x20,0x22,0x7e,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,0x75,
0x65,0x2e,0x73,0x6c,0x69,0x63,0x65,0x28,0x20,0x31,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x09,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x49,0x64,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,
0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x6b,0x65,0x79,0x20,0x2b,
0x20,0x22,0x20,0x3d,0x20,0x5c,0x22,0x22,0x20,0x2b,0x20,0x22,0x7e,0x22,0x20,0x2b,0x20,0x76,0x61,0x6c,
0x75,0x65,0x20,0x2b,0x20,0x22,0x5c,0x22,0x20,0x28,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,
0x29,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x7d,
0x0a,0x09,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x75,0x6e,0x72,
0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x49,0x64,0x20,0x21,0x3d,0x20,0x6e,0x75,0x6c,0x6c,0x20,0x29,0x0a,
0x09,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x74,0x68,
0x72,0x6f,0x77,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x78,0x63,0x65,
0x70,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x22,0x55,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x20,
0x73,0x79,0x6d,0x62,0x6f,0x6c,0x3a,0x20,0x22,0x20,0x2b,0x20,0x62,0x69,0x6e,0x64,0x20,0x2b,0x20,0x22,
0x20,0x69,0x6e,0x20,0x22,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,
0x68,0x20,0x28,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x20,0x6d,0x5f,0x62,0x69,0x6e,0x64,0x4e,
0x61,0x6d,0x65,0x73,0x53,0x74,0x61,0x63,0x6b,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x7b,
0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x65,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,0x2b,
0x3d,0x20,0x65,0x6e,0x74,0x72,0x79,0x3b,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x65,0x78,0x63,
0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x22,0x2e,0x22,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,
0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x65,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,
0x2b,0x3d,0x20,0x75,0x6e,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x64,0x49,0x64,0x3b,0x0a,0x09,0x09,0x09,
0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x74,0x68,0x72,0x6f,0x77,0x20,0x65,0x78,
0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x3b,0x20,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,
0x0a,0x09,0x09,0x66,0x6f,0x72,0x65,0x61,0x63,0x68,0x28,0x20,0x6b,0x65,0x79,0x2c,0x20,0x76,0x61,0x6c,
0x75,0x65,0x20,0x69,0x6e,0x20,0x73,0x75,0x62,0x54,0x61,0x62,0x6c,0x65,0x4f,0x72,0x41,0x72,0x72,0x61,
0x79,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x79,0x70,
0x65,0x20,0x3d,0x20,0x74,0x79,0x70,0x65,0x6f,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0x0a,0x09,0x09,
0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x73,0x54,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x28,0x20,0x74,
0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,
0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x73,0x41,0x72,0x72,0x61,0x79,0x20,0x3d,0x20,0x28,0x20,0x74,
0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,0x61,0x72,0x72,0x61,0x79,0x22,0x20,0x29,0x0a,0x09,0x09,0x09,
0x69,0x66,0x20,0x28,0x20,0x69,0x73,0x54,0x61,0x62,0x6c,0x65,0x20,0x7c,0x7c,0x20,0x69,0x73,0x41,0x72,
0x72,0x61,0x79,0x20,0x29,0x0a,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,
0x6b,0x65,0x79,0x20,0x2b,0x20,0x22,0x20,0x3d,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x4c,0x6f,
0x67,0x28,0x20,0x69,0x73,0x54,0x61,0x62,0x6c,0x65,0x20,0x3f,0x20,0x22,0x7b,0x22,0x20,0x3a,0x20,0x22,
0x5b,0x22,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x6d,0x5f,0x62,0x69,0x6e,
0x64,0x4e,0x61,0x6d,0x65,0x73,0x53,0x74,0x61,0x63,0x6b,0x2e,0x70,0x75,0x73,0x68,0x28,0x20,0x6b,0x65,
0x79,0x20,0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x69,0x66,0x20,0x28,0x20,0x52,0x65,0x73,0x6f,0x6c,0x76,
0x65,0x28,0x20,0x28,0x20,0x69,0x73,0x54,0x61,0x62,0x6c,0x65,0x20,0x29,0x20,0x3f,0x20,0x76,0x61,0x6c,
0x75,0x65,0x20,0x3a,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x54,0x61,0x62,0x6c,0x65,0x2c,0x20,0x76,0x61,
0x6c,0x75,0x65,0x2c,0x20,0x74,0x68,0x72,0x6f,0x77,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6f,0x6e,0x20,
0x29,0x20,0x29,0x0a,0x09,0x09,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x09,0x66,0x6f,0x75,0x6e,0x64,
0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x3b,0x0a,0x09,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x09,0x6d,
0x5f,0x62,0x69,0x6e,0x64,0x4e,0x61,0x6d,0x65,0x73,0x53,0x74,0x61,0x63,0x6b,0x2e,0x70,0x6f,0x70,0x28,
0x29,0x3b,0x0a,0x09,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x09,0x4c,0x6f,0x67,0x28,0x20,0x69,0x73,0x54,
0x61,0x62,0x6c,0x65,0x20,0x3f,0x20,0x22,0x7d,0x22,0x20,0x3a,0x20,0x22,0x5d,0x22,0x20,0x29,0x3b,0x0a,
0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x49,0x6e,0x64,0x65,
0x6e,0x74,0x2d,0x2d,0x3b,0x0a,0x09,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x6f,0x75,0x6e,0x64,
0x3b,0x0a,0x09,0x7d,0x0a,0x09,0x0a,0x09,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4c,0x6f,0x67,
0x28,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x29,0x0a,0x09,0x7b,0x0a,0x09,0x09,0x69,0x66,0x20,0x28,
0x20,0x6d,0x5f,0x6c,0x6f,0x67,0x20,0x29,0x0a,0x09,0x09,0x7b,0x0a,0x09,0x09,0x09,0x66,0x6f,0x72,0x20,
0x28,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6d,
0x5f,0x6c,0x6f,0x67,0x49,0x6e,0x64,0x65,0x6e,0x74,0x3b,0x20,0x69,0x2b,0x2b,0x20,0x29,0x0a,0x09,0x09,
0x09,0x7b,0x0a,0x09,0x09,0x09,0x09,0x70,0x72,0x69,0x6e,0x74,0x28,0x20,0x22,0x20,0x20,0x22,0x20,0x29,
0x3b,0x0a,0x09,0x09,0x09,0x7d,0x0a,0x09,0x09,0x09,0x0a,0x09,0x09,0x09,0x70,0x72,0x69,0x6e,0x74,0x6c,
0x28,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x29,0x3b,0x0a,0x09,0x09,0x7d,0x0a,0x09,0x7d,0x0a,0x0a,
0x09,0x6d,0x5f,0x74,0x61,0x72,0x67,0x65,0x74,0x54,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x6e,0x75,0x6c,
0x6c,0x3b,0x0a,0x09,0x6d,0x5f,0x66,0x69,0x78,0x75,0x70,0x53,0x65,0x74,0x20,0x3d,0x20,0x5b,0x5d,0x3b,
0x0a,0x09,0x6d,0x5f,0x62,0x69,0x6e,0x64,0x4e,0x61,0x6d,0x65,0x73,0x53,0x74,0x61,0x63,0x6b,0x20,0x3d,
0x20,0x5b,0x5d,0x3b,0x0a,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x3b,
0x0a,0x09,0x6d,0x5f,0x6c,0x6f,0x67,0x49,0x6e,0x64,0x65,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x7d,
0x0a,0x0a,0x0a,0x00
};
@@ -0,0 +1,44 @@
print( "Test\n" );
local value = TestReturn();
print("My value = " + value + "\n");
temp <- [ 1, 2, 3, 4 ];
foreach(idx,val in temp)
{
print("index="+idx+" value="+val+"\n");
}
temp[0] = 33;
temp[1] = 34;
temp[2] = 35;
temp[3] = 36;
foreach(idx,val in temp)
{
print("index="+idx+" value="+val+"\n");
}
foreach(idx,val in mytable)
{
print("index="+idx+" value="+val+"\n");
}
print("x = " + mytable.controlpoint_1_vector.x + "\n");
print("y = " + mytable.controlpoint_1_vector.y + "\n");
print("z = " + mytable.controlpoint_1_vector.z + "\n");
local string = "controlpoint_" + 1;
local vectortable = string + "_vector";
local vector = Vector(0,0,0);
if ( vectortable in mytable )
{
print("here\n");
vector = Vector( mytable[vectortable].x, mytable[vectortable].y, mytable[vectortable].z );
}
print("Vector = " + vector + "\n" );
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,17 @@
//========== Copyright © 2008, Valve Corporation, All rights reserved. ========
//
// Purpose:
//
//=============================================================================
#ifndef VSQUIRREL_H
#define VSQUIRREL_H
#if defined( _WIN32 )
#pragma once
#endif
IScriptVM *ScriptCreateSquirrelVM();
void ScriptDestroySquirrelVM( IScriptVM *pVM );
#endif // VSQUIRREL_H
@@ -0,0 +1,180 @@
//-----------------------------------------------------------------------------
// Project Script
//-----------------------------------------------------------------------------
$Macro SRCDIR "..\..\..\.."
$Macro OUTBINDIR "."
$Include "$SRCDIR\vpc_scripts\source_exe_con_win32_base.vpc"
$Configuration
{
$Compiler
{
$AdditionalIncludeDirectories "$BASE,..\include;..\sqplus"
$PreprocessorDefinitions "$BASE;PROTECTED_THINGS_DISABLE;VSQUIRREL_TEST"
}
}
$Project "vsquirrel"
{
$Folder "Script Files"
{
$File "init.nut"
{
$Configuration
{
$CustomBuildStep
{
$CommandLine "$SRCDIR\devtools\srcsrv\perl\bin\perl.exe $SRCDIR\devtools\bin\texttoarray.pl $(InputFileName) g_Script_$(InputName)> $(InputName)_nut.h" [$WINDOWS]
$CommandLine "perl $SRCDIR\devtools\bin\texttoarray.pl $(InputFileName) g_Script_$(InputName)> $(InputName)_nut.h" [$POSIX]
$Description "$(InputFileName) produces $(InputName)_nut.h"
$Outputs "$(InputName)_nut.h"
}
}
}
}
$Folder "Source Files"
{
$File "..\..\..\..\public\vscript\ivscript.h"
$File "..\..\..\..\public\vscript\vscript_templates.h"
$File "vsquirrel.cpp"
{
$Configuration
{
$Compiler
{
// "SQPlus" need exceptions. If commit to squirrel, look into removing that
$AdditionalOptions "/EHa"
}
}
}
}
$Folder "Squirrel"
{
$Folder "Header Files"
{
$File "..\include\sqdbgserver.h"
$File "..\include\sqrdbg.h"
$File "..\include\sqstdaux.h"
$File "..\include\sqstdblob.h"
$File "..\include\sqstdio.h"
$File "..\include\sqstdmath.h"
$File "..\include\sqstdstring.h"
$File "..\include\sqstdsystem.h"
$File "..\include\squirrel.h "
}
$Folder "squirrel"
{
$Folder "Source Files"
{
$File "..\squirrel\sqapi.cpp" \
"..\squirrel\sqbaselib.cpp" \
"..\squirrel\sqclass.cpp" \
"..\squirrel\sqcompiler.cpp" \
"..\squirrel\sqdebug.cpp" \
"..\squirrel\sqfuncstate.cpp" \
"..\squirrel\sqlexer.cpp" \
"..\squirrel\sqmem.cpp" \
"..\squirrel\sqobject.cpp" \
"..\squirrel\sqstate.cpp" \
"..\squirrel\sqtable.cpp" \
"..\squirrel\sqvm.cpp" \
"..\sqdbg\sqrdbg.cpp" \
"..\sqdbg\sqdbgserver.cpp"
{
$Configuration
{
$Compiler
{
$WarningLevel "Level 3 (/W3)"
$Detect64bitPortabilityIssues "No"
}
}
}
}
$Folder "Header Files"
{
$File "..\squirrel\sqarray.h" \
"..\squirrel\sqclass.h" \
"..\squirrel\sqclosure.h" \
"..\squirrel\sqcompiler.h" \
"..\squirrel\sqfuncproto.h" \
"..\squirrel\sqfuncstate.h" \
"..\squirrel\sqlexer.h" \
"..\squirrel\sqobject.h" \
"..\squirrel\sqopcodes.h" \
"..\squirrel\sqpcheader.h" \
"..\squirrel\sqstate.h" \
"..\squirrel\sqstring.h" \
"..\squirrel\sqtable.h" \
"..\squirrel\squserdata.h" \
"..\squirrel\squtils.h" \
"..\squirrel\sqvm.h"
}
}
$Folder "sqstdlib"
{
$Folder "Source Files"
{
$File "..\sqstdlib\sqstdaux.cpp"\
"..\sqstdlib\sqstdblob.cpp" \
"..\sqstdlib\sqstdmath.cpp" \
"..\sqstdlib\sqstdrex.cpp" \
"..\sqstdlib\sqstdstream.cpp" \
"..\sqstdlib\sqstdstring.cpp"
{
$Configuration
{
$Compiler
{
$WarningLevel "Level 3 (/W3)"
$Detect64bitPortabilityIssues "No"
}
}
}
}
}
$Folder "sqplus"
{
$Folder "Source Files"
{
$File "..\sqplus\SqPlus.cpp" \
"..\sqplus\SquirrelBindingsUtils.cpp" \
"..\sqplus\SquirrelBindingsUtilsWin32.cpp" \
"..\sqplus\SquirrelObject.cpp" \
"..\sqplus\SquirrelVM.cpp"
{
$Configuration
{
$Compiler
{
$WarningLevel "Level 3 (/W3)"
$Detect64bitPortabilityIssues "No"
// "SQPlus" need exceptions. If commit to squirrel, look into removing that
$AdditionalOptions "/EHa"
}
}
}
}
$Folder "Header Files"
{
$File "..\sqplus\sqplus.h" \
"..\sqplus\SqPlusConst.h" \
"..\sqplus\sqplusWin32.h" \
"..\sqplus\SquirrelBindingsUtils.h" \
"..\sqplus\SquirrelBindingsUtilsWin32.h" \
"..\sqplus\SquirrelObject.h" \
"..\sqplus\SquirrelVM.h"
}
}
}
$Folder "Link Libraries"
{
$File "$SRCDIR\lib\public\mathlib.lib"
}
}